![根据变量注释掉 Bash 脚本中的一行](https://linux22.com/image/1411574/%E6%A0%B9%E6%8D%AE%E5%8F%98%E9%87%8F%E6%B3%A8%E9%87%8A%E6%8E%89%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E4%B8%80%E8%A1%8C.png)
我不是程序员,我正在尝试编写我的第一个脚本。
我有:
# NOMBREX1:lalalala
# NOMBREX2:0
if [ "$NOMBREX2" == "0" ];
then ??????
fi
$COMMENT1 rar a -r .........
如果NOMBREX2=0
我想重命名$COMMENT1
来#
评论这一行。
我怎样才能做到这一点?
答案1
您已经拥有所需的所有构建块,您只需要逆转逻辑(并修复一个小的语法错误)。
首先,介绍一下背景。[
基本上是 的别名test
。大部分内容可以在 test(1) 手册页中找到(部分内容);尽管学习所有内容的语法可能并不实用,尤其是刚开始时,我建议您熟悉它test
能做什么。
如果我理解你的问题正确的话,你想执行rar
命令当且仅当 $NOMBREX2
不等于“0”。
test
有很多条件运算符,包括=
(“字符串相等”)和!=
(“字符串不相等”)。请注意,整数值使用不同的运算符分别包括-eq
和-ne
。我不知道为什么会这样,但现在这已经是过去的事了。
如果语句的计算结果为真,或者更准确地说,如果命令返回零退出状态,则在 bash 中有两种方法可以运行命令;要么将其括在块中if ...; then .. fi
,要么使用&&
运算符分隔命令。如果您想在语句的计算结果为假(返回非零退出状态)时执行命令,也可以执行相同的操作;if ! ...; then ... fi
(!
表示“不”)或||
在命令之间使用。
因为我们已经知道执行命令的条件rar
是不等式比较,所以我们可以用两种不同的方式来写它(假设您想要字符串比较;否则,而不是在条件中!=
使用):-ne
选项 1(惯用,适用于简单条件和单个命令):
test "$NOMBREX2" != "0" && rar a -r ...
选项 2(适用于更复杂的条件或多个命令):
if [ "$NOMBREX2" != "0" ]; then
rar a -r ...
# ... anything else goes here ...
fi