shell 脚本中方括号的用途
Purpose of square brackets in shell scripts
我在其中一个 shell 脚本中看到了这一行:
[-f $host_something ] && .$host_something
带有 -f
开关的方括号应该做什么,将它与相同的环境变量进行与运算有什么意义?
[
实际上是一个实际的二进制文件。它是 test(1)
命令的别名。它会忽略它的最后一个参数,应该是 ]
。 运行 man test
了解更多信息。这不是真正的 shell 语法。
方括号实际上是 test
工具的别名,因此您可以查看 man test
以了解其工作原理。 -f
开关是此工具可以 运行 进行的众多测试之一,用于测试文件是否存在以及是否为常规文件。
您需要更多空间。
命令
[ -f $host_something ] && . $host_something
代表
if [ -f $host_something ]; then
source $host_something
fi
或文字:
当变量 host_something
中给出的文件确实是一个文件时,则在不打开子 shell 的情况下执行该文件中的行。您不需要子 shell,因为一旦子 shell 完成,子 shell 中的所有设置都会丢失。
我在其中一个 shell 脚本中看到了这一行:
[-f $host_something ] && .$host_something
带有 -f
开关的方括号应该做什么,将它与相同的环境变量进行与运算有什么意义?
[
实际上是一个实际的二进制文件。它是 test(1)
命令的别名。它会忽略它的最后一个参数,应该是 ]
。 运行 man test
了解更多信息。这不是真正的 shell 语法。
方括号实际上是 test
工具的别名,因此您可以查看 man test
以了解其工作原理。 -f
开关是此工具可以 运行 进行的众多测试之一,用于测试文件是否存在以及是否为常规文件。
您需要更多空间。
命令
[ -f $host_something ] && . $host_something
代表
if [ -f $host_something ]; then
source $host_something
fi
或文字:
当变量 host_something
中给出的文件确实是一个文件时,则在不打开子 shell 的情况下执行该文件中的行。您不需要子 shell,因为一旦子 shell 完成,子 shell 中的所有设置都会丢失。