根据变量注释掉 Bash 脚本中的一行

根据变量注释掉 Bash 脚本中的一行

我不是程序员,我正在尝试编写我的第一个脚本。

我有:

# 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

相关内容