这可能更像是一次思考练习,但在我在条件内执行的命令之后,我正在尝试回显换行符。例如,我有:
if ssh me@host [ -e $filename ] ; then
echo "File exists remotely"
else
echo "Does not exist remotely"
fi并希望在ssh命令之后添加一个echo,而不管结果如何。原因是格式化;这样,在提示ssh密码之后就会出现换行符。
第一次尝试
if ssh me@host [ -e $filename ] && echo ; then因为&& echo不会更改条件结果,但是如果ssh返回false,bash将不会执行echo。类似地,
if ssh me@host [ -e $filename ] || (echo && false) ; then不工作,因为它会短路,如果ssh返回真.
这个问题的答案是
ssh me@host [ -e $filename ]
result=$?
echo
if [ $result == 0 ] ; then但不知道是否有类似的条件表达式来做这件事。
谢谢。
发布于 2011-07-20 21:14:44
虽然这会起作用
if foo && echo || ! echo; then我宁愿把整件事变成一个函数
function addecho() {
"$@" # execute command passed as arguments (including parameters)
result= $? # store return value
echo
return $result # return stored result
}
if addecho foo; then发布于 2011-07-20 21:01:58
那这个呢?
if ssh me@host [ -e $filename ] && echo || echo; then我还没有想过&&和-的优先顺序,并且肯定添加括号会有帮助,但就像这样,它已经起作用了.当ssh失败和它成功的时候你都会得到回音..。
发布于 2011-07-20 21:02:20
在文件名测试之前添加"echo“
if ssh me@host "echo; [ -e $filename ]"; then
echo "File exists remotely"
else
echo "Does not exist remotely"
fihttps://stackoverflow.com/questions/6768416
复制相似问题