remote_file=$(ssh -t -o LogLevel=QUIET $ip_address 'if [[ -f ~/logs/output.log ]]; then echo exists; else echo nonexistant; fi')
echo $remote_file
if [[ "x$remote_file" == "xexists" ]]
then
# do some stuff here
else
# do some other stuff here
fi
变量$ remote_file似乎存储了正确的值,因为它在echo语句中输出了正确的值。但是当我测试它的值时,似乎有一些错误,因为测试总是失败并转到else块。我尝试使用set -x
进行调试,并注意到测试条件左侧缺失。这可能是什么问题?
== \x\e\x\i\s\t\s ]]
答案 0 :(得分:2)
正如Charles Duffy所提到的,输出可能包含不明显的空白字符,但您需要在进行比较之前添加到比较中或从变量$remote_file
中删除。
请注意,给出的示例并不需要字符串比较。 这可能不是很明显,但是如果你用命令启动ssh,那么当命令完成时,ssh将以与命令本身相同的退出代码退出。因此,您可以将代码简化为:
if ssh -t -o LogLevel=QUIET $ip_address 'test -f ~/logs/output.log'
then
# do some stuff here
else
# do some other stuff here
fi