sys*_*spy -3 command-line bash
我想使用if语句比较 Bash 中的字符串,但它不起作用:
#!/bin/bash
os=`lsb_release -r | sed 's/.*://'`
echo $os
if [ $os="16.04" ]
then
echo "g"
elif [ $os="14.04" ]
then
echo "b"
else
echo "c"
fi
Run Code Online (Sandbox Code Playgroud)
在 Bash 的test(同义词[ ... ])内置[[ ... ]]函数中,以及对于通常更可取的表达式,您必须用空格分隔所有参数和运算符。
此外,您应该始终引用您的变量。还建议使用缩进来提高代码的可读性,并使用新样式的进程替换语法$(...)而不是`...`.
哦,lsb_release还有一个-sor--short选项可以省略第一列,你不需要用sed.
它可能看起来像这样:
#!/bin/bash
os=$(lsb_release -rs)
echo "$os"
if [[ "$os" = "16.04" ]] ; then
echo "g"
elif [[ "$os" = "14.04" ]] ; then
echo "b"
else
echo "c"
fi
Run Code Online (Sandbox Code Playgroud)
另一方面,为了将一个变量与多个值进行比较,case可能更漂亮:
#!/bin/bash
os=$(lsb_release -rs)
echo "$os"
case "$os" in
"16.04") echo "g" ;;
"14.04") echo "b" ;;
*) echo "c" ;;
esac
Run Code Online (Sandbox Code Playgroud)