![if else 语句情况下的 cat 输出](https://linux22.com/image/141940/if%20else%20%E8%AF%AD%E5%8F%A5%E6%83%85%E5%86%B5%E4%B8%8B%E7%9A%84%20cat%20%E8%BE%93%E5%87%BA.png)
os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi
当我在 Ubuntu 机器上尝试时,它显示 ./test: line 2: Ubuntu: command not found notfound
这对我有用,但我想将它分配给一个变量
if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi
答案1
该if
声明称命令,并检查其退出状态。$os_version
作为命令使用的方法是展开它并运行生成的命令行。因此,如果变量包含Ubuntu 18.04.1 LTS \n \l
,它将尝试运行Ubuntu
使用参数18.04.1
、LTS
等调用的命令。
你可能想使用
if [ -n "$os_version" ]; then
...
fi
检查变量是否为空([ -n "$var" ]
如果不为空则为 true,[ -z "$var" ]
如果变量为空则为 true)。
或者,您可以像在编辑中一样在语句本身grep
中使用,并在那里设置一个变量:if
distro=unknown
if grep -q Ubuntu < /etc/issue; then
distro=ubuntu
fi
# ... later
if [ "$distro" = ubuntu ]; then
# do something Ubuntu-specific
fi
答案2
grep -q Ubuntu /etc/issue && echo found || echo not found