bash 脚本中 a='' 的含义是什么?

qwe*_*805 3 bash shell-script

有人能告诉我a='' bash 脚本中的含义是什么吗?

例如:

 #!/bin/bash

    a=''
    case $@ in
    testfile)
             for list in $(cat $1);do

useradd -s /bin/false $list
         done
         ;;
$a)
         echo "empty"
         ;;
*)
         echo "wrong character"
         ;;
esac
Run Code Online (Sandbox Code Playgroud)

谢谢

jes*_*e_b 6

这是一个变量赋值。在这种情况下a是您的变量,您将其设置为空值;''将评估为无。

正如 ilkkachu 指出的那样:

使用a=''实际上与使用a=""a=

正如 cas 指出的那样:

将变量设置为空值(或任何初始/默认值)还可以确保您不会使用它可能具有的任何值,如果它恰好是一个环境变量(例如在父 shell 中导出)。例如,如果您的脚本假定变量为空/未定义,除非脚本本身定义它,并基于此采取不同的操作,则这可能是问题。

脚本文件

#!/bin/bash

if [[ $1 == null ]]; then
    a=
elif [[ $1 == unset ]]; then
    unset a
fi

echo "${a:-test}"
Run Code Online (Sandbox Code Playgroud)

在行动:

$ export a=value
$ ./script.sh null
test
$ ./script.sh unset
test
$ ./script.sh
value
$ echo $a
value
Run Code Online (Sandbox Code Playgroud)

在许多情况下,将变量设置为空值与取消设置变量相同: unset a

但是有一些注意事项

最后一个

  • 未设置与设置为空值不同,但这很少重要。`IFS` 是我能想到的唯一例子。 (3认同)
  • 此外,`a=` 完全等同于 `a=''` 或 `a=""`。这仅取决于您是否想在那里加上引号以澄清您的意思是一个空值,而不是忘记在那里写一个值。 (3认同)