#!/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/

10-10 02:26