我在一个.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
我期待着“未知参数您好”。我做错了什么?
1条答案
按热度按时间0sgqnhkj1#
比较的说法是正确的:
还可能存在其他问题,如:
1.确保在调用函数时传递$1参数:WRITE
prepare_for_test $1
1.问题可能出在使用的别名上。对于几乎所有目的,别名都会被外壳函数所取代。因此,您需要将别名设置为函数并将其导出,或者使用特殊变量BASH_ALIASS。在您的案例中: