首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash,总是在条件语句中回显

问Bash,总是在条件语句中回显
EN

Stack Overflow用户
提问于 2011-07-20 20:53:32
回答 3查看 1.7K关注 0票数 2

这可能更像是一次思考练习,但在我在条件内执行的命令之后,我正在尝试回显换行符。例如,我有:

代码语言:javascript
复制
if ssh me@host [ -e $filename ] ; then
  echo "File exists remotely"
else
  echo "Does not exist remotely"
fi

并希望在ssh命令之后添加一个echo,而不管结果如何。原因是格式化;这样,在提示ssh密码之后就会出现换行符。

第一次尝试

代码语言:javascript
复制
if ssh me@host [ -e $filename ] && echo ; then

因为&& echo不会更改条件结果,但是如果ssh返回false,bash将不会执行echo。类似地,

代码语言:javascript
复制
if ssh me@host [ -e $filename ] || (echo && false) ; then

不工作,因为它会短路,如果ssh返回真.

这个问题的答案是

代码语言:javascript
复制
ssh me@host [ -e $filename ]
result=$?
echo
if [ $result == 0 ] ; then

但不知道是否有类似的条件表达式来做这件事。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-20 21:14:44

虽然这会起作用

代码语言:javascript
复制
if foo && echo || ! echo; then

我宁愿把整件事变成一个函数

代码语言:javascript
复制
function addecho() {
    "$@" # execute command passed as arguments (including parameters)
    result= $? # store return value
    echo
    return $result # return stored result
}

if addecho foo; then
票数 3
EN

Stack Overflow用户

发布于 2011-07-20 21:01:58

那这个呢?

代码语言:javascript
复制
 if ssh me@host [ -e $filename ]  && echo || echo; then

我还没有想过&&和-的优先顺序,并且肯定添加括号会有帮助,但就像这样,它已经起作用了.当ssh失败和它成功的时候你都会得到回音..。

票数 2
EN

Stack Overflow用户

发布于 2011-07-20 21:02:20

在文件名测试之前添加"echo“

代码语言:javascript
复制
if ssh me@host "echo; [ -e $filename ]"; then
  echo "File exists remotely"
else
  echo "Does not exist remotely"
fi
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6768416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档