我已经破解了很多 shell 脚本,有时最简单的事情让我感到困惑。今天我遇到了一个广泛使用:
(冒号)bash 内置的脚本。
该文档似乎很简单:
Run Code Online (Sandbox Code Playgroud): (a colon) : [arguments]
除了扩展参数和执行重定向之外,什么都不做。返回状态为零。
但是,我以前只在 shell 扩展的演示中看到过这个。我遇到的脚本中的用例广泛使用了这种结构:
if [ -f ${file} ]; then
grep some_string ${file} >> otherfile || :
grep other_string ${file} >> otherfile || :
fi
Run Code Online (Sandbox Code Playgroud)
实际上有数百个 grep,但它们只是更多相同。除了上面的简单结构之外,不存在输入/输出重定向。稍后在脚本中不会检查返回值。
我正在阅读这是一个无用的结构,上面写着“或什么都不做”。用“或什么都不做”来结束这些 grep 的目的是什么?在什么情况下,这个构造会导致与简单地|| :
从所有实例中删除不同的结果?