微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

: 一开始做什么?

如何解决: 一开始做什么?

当我阅读安装 bash 脚本时,我偶然发现了这一行:

: ${SUDO:=sudo}
"${SUDO}" apt install vim

我知道如果之前未设置 SUDO,则 sudo 设置为 SUDO。 但是开头的冒号在这里有什么作用?

解决方法

: 是一个什么都不做的命令——忽略它的参数和任何输入,并以零退出状态退出。请参阅 posix colonman colon

它通常用于无限循环:

while :; do

在空表达式中:

if something; do
     : do nothing
done

触发一些调试输出:

cmd=(strange command)
set -x
: "${cmd[@]}"  # set -x will show

用于临时注释和使用此处文档进行多行注释:

: <<EOF
   A multiline comment.
EOF

或者在您的问题中使用 ${...:=...} 扩展来为变量分配一些默认值,如果变量未设置。请注意,您应该引用扩展名,以免发生文件名扩展,因为在某些极端情况下,此类表达式中的文件名扩展可能会导致您的脚本无缘无故地神奇地滞后。

# SUDO="${SUDO:+sudo}"   <- you have to type SUDO twice :(
: "${SUDO:=sudo}"        # <- only type SUDO once!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。