![如何将命令输出存储为变量,同时在失败时出错?](https://linux22.com/image/200592/%E5%A6%82%E4%BD%95%E5%B0%86%E5%91%BD%E4%BB%A4%E8%BE%93%E5%87%BA%E5%AD%98%E5%82%A8%E4%B8%BA%E5%8F%98%E9%87%8F%EF%BC%8C%E5%90%8C%E6%97%B6%E5%9C%A8%E5%A4%B1%E8%B4%A5%E6%97%B6%E5%87%BA%E9%94%99%EF%BC%9F.png)
我正在尝试基于命令变量执行 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
。