shell - 为什么这个 shell 脚本输出如此​​奇怪

标签 shell

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

虽然我知道错误是缺少方括号 if [ $0 == "测试"] || [ $0 == "全部"];然后 但为什么输出这样???

最佳答案

考虑行 if [ $0 == "test"] || $0 ==“全部”]

其形式为if cmd1 || cmd2,其中 cmd1 是 [ $0 == "test ] cmd2 是 $0 == "all"]

第二个命令使用参数 ==all] 调用脚本。所以你有一个递归。

请记住,[ 不是 shell 语法的一部分。它只是一个具有奇怪功能的命令,要求其最后一个参数为 ]

关于shell - 为什么这个 shell 脚本输出如此​​奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43252984/

相关文章:

linux - 如何gzip文件并保留原始扩展名?

linux - 有没有办法按列 'uniq'?

linux - 使用 sed 命令替换文件内容

python - Linux从python运行shell cmd,无法加载配置文件

bash - 在 Bash 中使用日期获取明天的日期

python - 调用 bash 脚本作为 Python 子进程 - Bash 陷入无限循环,输入错误

linux - shell脚本创建变量并在文件中查找变量

linux - 用于克隆 GitHub 存储库的 Shell 脚本

linux - shell脚本中如何知道后台作业是否完成?

linux - 在后台运行 inotify 脚本