#!/bin/bash
echo "===========3333333====="
if [ $0 == "test" ] || $0 == "all" ];then
echo "---"
fi
无限循环输出:
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
===========3333333=====
虽然我知道错误的是缺少方括号 如果[$ 0 ==“test”] || [$ 0 ==“all”];然后 但为什么输出那样???
答案 0 :(得分:4)
考虑行if cmd1 || cmd2
格式为[ $0 == "test ]
,其中cmd1为$0 == "all" ]
和cmd2是==
第二个命令正在调用带有参数all
,]
和[
的脚本。所以你有一个递归。
请记住,]
不是 shell语法的一部分。它只是一个具有奇怪特征的命令,要求其最后一个参数为pip install -U Celery
。
答案 1 :(得分:1)
$0 == "all" ];then
本节开始递归。因为$ 0再次启动脚本。
例如下面的代码产生相同的结果
#!/bin/bash
echo "===========3333333====="
$0 bash is not checking below!!!!!!!!!!
echo "ok"
fi