Bash脚本在系统启动时执行命令

时间:2015-06-18 21:26:26

标签: linux bash alias

我正在尝试制作一个bash脚本来检查两个数据值和天气是否设置为1或0我想做某事。这些值通常在系统启动时设置,通常在系统完全启动后定义(这就是我使用while循环继续检查直到定义的原因):

到目前为止,我有这个,但我收到了一个错误:

#!/bin/bash

shopt -s expand_aliases

alias gd126='gdget 126' # output is either 1 or 0
alias gd3='gdget 3'     # output is either 1 or 0
alias gd5='gdset 5 1'   # set this data to 1 

gd126  
gd3     


while true; do
        if [ gd126 -eq 0 ] && [ gd3 -eq 1 ]; then
                gd5; break;
        fi;
done

这是我运行myScript.sh时的输出:

[root@server tmp]# ./myScript.sh
0
0
./myScript.sh: [: gd126: integer expression expected
./myScript.sh: [: gd126: integer expression expected

有人可以告诉我为什么吗?我尝试将'-eq'更改为'==',它只是停在那里没有输出。

1 个答案:

答案 0 :(得分:1)

使用别名时没有幸福的结局,特别是在脚本中没有。请改用功能。在任何情况下,如果您想要输出命令,请使用"$(somecommand)",而不是命令名称本身:

#!/bin/bash
gd126() {
    gdget 126
}

if [ "$(gd126)" -eq 0 ]
then
  echo "It's 0"
fi