如何将命令输出存储为变量,同时在失败时出错?

如何将命令输出存储为变量,同时在失败时出错?

我正在尝试基于命令变量执行 if 语句,例如:

ssh_location=$(which ssh)

我的问题是,我想存储这个仅有的如果它存在于系统上,那么我可以使用二进制文件进行进一步处理,否则我想回显错误字符串。这就是我正在尝试但没有运气的事情:

if ["$ssh_location"] ; then
    echo "it exists"
else 
    echo "does not exist"
fi

我不断收到此错误消息:

./test.sh: line 6: [/usr/local/bin/ssh]: No such file or directory
does not exist

(它肯定存在)。

答案1

您没有检查文件是否存在,而是尝试使用["$ssh_location"]不存在的路径执行命令。

检查文件是否存在的语法是:

if [ -f "$ssh_location" ]

您缺少括号内的空格(是的,它们是必需的)和-f.如果没有,-f您将评估命令的返回代码ssh

相关内容