我正在尝试在 bash 中使用 If/else 语句。我很困惑哪个是正确的语法。
if [ "$NUMBER_dcn" -gt $NO ]
then
dir_dcn='/mnt/md0/capture'
fi
或者
if [ "{$NUMBER_dcn}" -gt $NO ]
then
dir_dcn='/mnt/md0/capture'
fi
NUMBER_dcn 使用以下方式填充
NUMBER_dcn=$(find /mnt/md0/capture/ -maxdepth 1 -name "*.pcap" |wc -l)
它们都是正确的,因为其中之一给了我一个“预期的整数表达式”错误。
答案1
引用变量的正确方法是$VAR
。由于您的VAR
填充是wc
,我假设它始终非空,因此您实际上不需要引号""
- 这些仅用于防止变量可能完全为空的情况。
然而,这不是你的问题。该-gt
运算符不仅需要两个参数,而且它们必须是整数。您要传递到-gt
这里的是,例如50
在一种情况和{50}
另一种情况下。后者不是整数表达式,而是以 开头的字符串{
,因此您应该去掉大括号。
大括号是使用变量的允许的替代语法:$VAR
与 相同${VAR}
。当您有时这很有用插变量的方式不清楚变量名在哪里结束。例如,如果您想打印变量值和索引,有时需要编写类似的内容
echo ${VAR}00
得到像这样的输出Hugo00
。如果没有大括号,bash 将尝试取消引用该变量VAR00
并失败,因为不存在这样的变量。 (请注意,在这种情况下,大括号前面有一个美元符号。)但是由于您没有插入任何内容,而是完全按原样使用变量,因此您不需要为大括号烦恼。