if ($(ipcs|grep test|wc -l)=630); then
echo "Shared Memory check passed"
fi
Run Code Online (Sandbox Code Playgroud)
我得到以下错误:
./Test1: line 25: 636=630: command not found
Run Code Online (Sandbox Code Playgroud)
一些语法错误
bash 中“if”结构的基础是这样的:
if [ expression ];
then
# code if 'expression' is true.
fi
Run Code Online (Sandbox Code Playgroud)
这是更正后的版本
if [ "$(ipcs|grep test|wc -l)" -eq 630 ]; then
echo "Shared Memory check passed"
fi
Run Code Online (Sandbox Code Playgroud)
或 with[[…]]防止没有双引号的变量值分词
if [[ $(ipcs|grep test|wc -l) -eq 630 ]]; then
echo "Shared Memory check passed"
fi
Run Code Online (Sandbox Code Playgroud)
或更好
if [[ $(ipcs|grep -c test) -eq 630 ]]; then
echo "Shared Memory check passed"
fi
Run Code Online (Sandbox Code Playgroud)
基本上有多种方法可以在 中构造if条件bash;AB的回答中概述了一个;另一个可能是您尝试使用的,涉及使用双括号,这是一种以bashC 风格的方式操作表达式/变量的方法,并且根据其定义,需要在为了工作(请注意,这不适用于字符串比较):
if (($(ipcs|grep test|wc -l)==630)); then
echo "Shared Memory check passed"
fi
Run Code Online (Sandbox Code Playgroud)