gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:42:48 32 4
gpt4 key购买 nike

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

prepare_for_test(){
stopresources;
initresources;
if [ "$1" = "--gf" ]; then
startglassfish;
fi
docker ps;
notify-send "Done!" "You can now test" -t 10000;
};
脚本的名称是 preparefortests.sh。当我在 bash 上运行它时,传递 --gf 或“--gf”:
preparefortests.sh --gf
它不运行别名 startglassfish,就好像那个 if 语句是假的一样。
我什至尝试添加对参数的检查:
if [ "$1" ] && [ "$1" != "--gf" ]; then
echo "uknown parameter $1"
fi
但它也不起作用,例如我尝试像这样运行它:
preparefortests.sh hello
我期待“未知参数你好”。
我究竟做错了什么?

最佳答案

比较语句是正确的:

if [ "$1" = "--gf" ]; then
startglassfish;
fi
可能还有其他问题,例如:
  • 确保在调用函数时传递 $1 参数:
    prepare_for_test $1
  • 问题可能是使用的别名。对于几乎所有用途,别名都被 shell 函数所取代。因此,您要么需要将别名作为函数并将其导出,要么使用特殊变量 BASH_ALIASES。在您的情况下:
  • if [ "$1" = "--gf" ];then
    ${BASH_ALIASES[startglassfish]};
    fi

    关于bash - 等于和不等于运算符在 bash 脚本中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70019759/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com