使用 If 语句

使用 If 语句

我正在尝试在 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并失败,因为不存在这样的变量。 (请注意,在这种情况下,大括号前面有一个美元符号。)但是由于您没有插入任何内容,而是完全按原样使用变量,因此您不需要为大括号烦恼。

相关内容