#!/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”];然后
但是为什么这样输出呢???
最佳答案
考虑行if [ $0 == "test" ] || $0 == "all" ]
格式为if cmd1 || cmd2
,其中cmd1为[ $0 == "test ]
并且cmd2是$0 == "all" ]
第二个命令是使用参数==
,all
和]
调用脚本。所以你有一个递归。
请记住,[
不是外壳语法的一部分。它只是一个具有奇怪功能的命令,要求其最后一个参数为]
。
关于shell - 为什么这个shell脚本输出如此奇怪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43252984/