相关疑难解决方法(0)

多行 shell 脚本注释 - 这是如何工作的?

最近,我偶然发现了一种我以前从未见过的多行注释类型——这是一个脚本示例:

echo a
#
: aaa 
: ddd 
#
echo b
Run Code Online (Sandbox Code Playgroud)

这似乎有效,甚至vim语法突出显示它。这种评论风格是什么,我如何找到有关它的更多信息?

bash shell-script

100
推荐指数
3
解决办法
20万
查看次数

内置的冒号 ':' 有什么作用?

我已经破解了很多 shell 脚本,有时最简单的事情让我感到困惑。今天我遇到了一个广泛使用:(冒号)bash 内置的脚本。

文档似乎很简单:

: (a colon)  
     : [arguments]  
Run Code Online (Sandbox Code Playgroud)

除了扩展参数和执行重定向之外,什么都不做。返回状态为零。

但是,我以前只在 shell 扩展的演示中看到过这个。我遇到的脚本中的用例广泛使用了这种结构:

if [ -f ${file} ]; then
    grep some_string ${file} >> otherfile || :
    grep other_string ${file} >> otherfile || :
fi
Run Code Online (Sandbox Code Playgroud)

实际上有数百个 grep,但它们只是更多相同。除了上面的简单结构之外,不存在输入/输出重定向。稍后在脚本中不会检查返回值。

我正在阅读这是一个无用的结构,上面写着“或什么都不做”。用“或什么都不做”来结束这些 grep 的目的是什么?在什么情况下,这个构造会导致与简单地|| :从所有实例中删除不同的结果?

shell-script shell-builtin

49
推荐指数
7
解决办法
1万
查看次数

如果我不想在 if-then 块中做任何事情,而是在它的 else 块中做一些事情怎么办?

#intro
if [ -n "$1" ]
    then
        echo 666
    else
        echo 555
fi
exit;
Run Code Online (Sandbox Code Playgroud)

其实我确实想做,echo 555而我不想在第一个块中做任何事情,我该怎么办?我注意到我不能只是删除echo 666.

shell

0
推荐指数
1
解决办法
184
查看次数

标签 统计

shell-script ×2

bash ×1

shell ×1

shell-builtin ×1