在Bash Script Variables中使用命令

时间:2016-04-19 10:20:51

标签: linux bash dropbox

我有一个bash脚本,用于检查Dropbox的当前状态

#!/bin/bash
while true
do
    echo Dropbox Status: 
    ~/bin/dropbox.py status
    sleep 1
    clear
done

这会产生一个看起来像这样的输出。

Dropbox Status: 
Up to date

但是我希望它看起来像这样。所以这一切都在一条线上

Dropbox Status: Update

我尝试了

等脚本
#!/bin/bash
while true
do
    STATUS=~/bin/dropbox.py status
    echo Dropbox Status: $STATUS
    sleep 1
    clear
done

然而,这只会产生Dropbox Status.sh: status: not found

等错误

有办法做我想做的事吗?

此外,如果我明显很明显,我很抱歉,因为我是Bash Script

的新手

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您需要在状态var

中存储命令结果
  STATUS=$(~/bin/dropbox.py status)

答案 1 :(得分:1)

使用printfcommand substitution

printf "Dropbox Status: %s\n" "$(~/bin/dropbox.py status)"

或中间变量:

status=$(~/bin/dropbox.py status)
printf "Dropbox Status: %s\n" "$status"

另请记住引用您的变量,否则它们将经历word splitting

为什么STATUS=~/bin/dropbox.py status不起作用?发生的是,调用命令status时环境变量STATUS设置为~/bin/dropbox.py,与运行相同:

_status=$STATUS
export STATUS=~/bin/dropbox.py
status
export STATUS=_status

但没有所有临时变量