bash 空运算符“:”、冒号有什么用?

bash 空运算符“:”、冒号有什么用?

BASH 脚本中的“null”运算符有什么用?我理解,if当您没有什么可说的,但需要一个命令来让程序正常运行时,它会用作命令后面的占位符。但它的整体用途是什么?你什么时候会使用它?什么时候使用它有意义?

答案1

允许参数扩展的副作用发生有时很有用。

例如,设置默认值

read -p "Enter your name: " name
: ${name:=John Doe}  # if the user entered an empty string
echo "$name"

答案2

您还可以将其用于无限循环:

while : ; do 
   # ....
done

答案3

您可以使用它来创建文件而无需运行程序::

: > /path/to/file

touch /path/to/file 这比(因为它不需要运行程序)快得多,touch而且可能比普通的更易于移植

> /path/to/file

似乎适用于许多系统。同样,它可以用来检查您是否具有文件的写权限

if { : >> /path/to/file;} 2> /dev/null
then
    echo "writeable"
else
    echo "write permission denied"
fi

虽然这通常也可以在没有的情况下完成:。注意事项:

  • 此命令不会检查文件是否已存在。如果不存在,则将创建该文件(前提是具有创建文件的权限)。
  • 如果该文件不存在,并且您的脚本没有权限创建它,则会报告“写入权限被拒绝”。

(请参阅链接问题以了解为什么这比更可靠的原因if [ -w /path/to/file ]。)

答案4

if当你只想执行负面操作时,可以在命令的正面测试中使用它。例如:

if [[ True == False ]]; then
    :
else
    echo "true <> flase"
fi

如果没有:bash 就会产生语法错误。

这是一个过于简单的例子。通常,当您尚未编写该代码段并且只需要一些不会产生错误的东西时,您会在初步编码中使用这种技术。

相关内容