ubuntu 等于和不等于运算符在bash脚本中不起作用

xxhby3vn  于 2022-10-27  发布在  其他
关注(0)|答案(1)|浏览(173)

我在一个.sh脚本中有这个函数:

prepare_for_test(){
    stopresources;
    initresources;
    if [ "$1" = "--gf" ]; then
            startglassfish;
    fi
    docker ps;
    notify-send "Done!" "You can now test" -t 10000;
 };

该脚本的名称为prepararefortests.sh。当我在bash上运行它时,传递--gf或“--gf”:

preparefortests.sh --gf

它不会运行别名StartGlassFish,就好像IF语句是假的一样。我甚至尝试在参数上添加一个检查:

if [ "$1" ] && [ "$1" != "--gf" ]; then
  echo "uknown parameter $1"
fi

但它也不起作用,例如,当我试图这样运行它时:

preparefortests.sh hello

我期待着“未知参数您好”。我做错了什么?

0sgqnhkj

0sgqnhkj1#

比较的说法是正确的:

if [ "$1" = "--gf" ]; then
        startglassfish;
fi

还可能存在其他问题,如:
1.确保在调用函数时传递$1参数:WRITE prepare_for_test $1
1.问题可能出在使用的别名上。对于几乎所有目的,别名都会被外壳函数所取代。因此,您需要将别名设置为函数并将其导出,或者使用特殊变量BASH_ALIASS。在您的案例中:

if [ "$1" = "--gf" ];then
${BASH_ALIASES[startglassfish]};
fi

相关问题