if else 语句中的 cat 输出

His*_*iss 2 shell shell-script

os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi
Run Code Online (Sandbox Code Playgroud)

当我在 Ubuntu 机器上尝试它时,它说 ./test: line 2: Ubuntu: command not found notfound

这对我有用,但我想将它分配给一个变量

if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi
Run Code Online (Sandbox Code Playgroud)

ilk*_*chu 7

if语句运行命令,并检查其退出状态。使用$os_version的命令扩展它,并运行所产生的命令行工作。因此,如果变量包含Ubuntu 18.04.1 LTS \n \l,它会尝试运行一个叫命令Ubuntu与参数18.04.1LTS等等。

你可能想用

if [ -n "$os_version" ]; then
    ...
fi
Run Code Online (Sandbox Code Playgroud)

检查变量是否为空([ -n "$var" ]如果不为空则为真,如果变量为空则为真[ -z "$var" ])。

或者,你可以使用grep的范围内if声明本身作为你的编辑一样,并设置一个变量有:

distro=unknown
if grep -q Ubuntu < /etc/issue; then
    distro=ubuntu
fi
# ... later
if [ "$distro" = ubuntu ]; then
    # do something Ubuntu-specific
fi
Run Code Online (Sandbox Code Playgroud)