为什么这个Bash脚本不出错?
发布时间:2020-12-15 19:11:42 所属栏目:安全 来源:网络整理
导读:这是我的Bash脚本: #!/bin/bash -eif [ == "" ]; then echo "BAD" exit 1fiecho "OK" 这里的输出: ./test.sh: line 3: [: ==: unary operator expectedOK 返回码为0。 在第3行有一个明显的语法错误。而不是引发语法错误,拒绝运行脚本,不知何故,脚本只是
这是我的Bash脚本:
#!/bin/bash -e if [ == "" ]; then echo "BAD" exit 1 fi echo "OK" 这里的输出: ./test.sh: line 3: [: ==: unary operator expected OK 返回码为0。 在第3行有一个明显的语法错误。而不是引发语法错误,拒绝运行脚本,不知何故,脚本只是运行并在运行时报告语法错误。 -e标志没有保护我,显然if语句中的语法错误构成了一个错误的条件,而不是立即退出程序的原因。但是,不管怎样,Bash已经解析了整个if … fi block,所以在忽略了错误的行之后,执行以某种方式恢复不是在下一个语法正确的行,而是在块结束之后? 我有两个问题: >发生了什么事?
>如果运行命令
[ ,并且只是检查它的返回码。 Bash不知道也不关心[command]的语法。
你可以在其中放一些其他的命令,Bash仍然不知道它的特定语法。 >使用 如果和-e处理退出代码:如果它不是零,如果不会让你进入那个块,而-e将退出。你一次也不能真正拥有这两种行为。 (好吧,似乎[出现与错误结果(1)和语法错误(2)不同的代码,所以可能“检测”语法错误。) 还有一些其他的工具,但这是我唯一知道的一个。建议欢迎。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在angularjs表达式中将字符串转换为数字或日期
- angularjs – transformResponse headers参数($resource)中
- scala – Spark SQL嵌套withColumn
- Angular 2,使用Angular Cli和Ui Router Ng2,Resolve / Reje
- 你可以在Angular 2(使用Typescript)中返回一个observable作
- scala – 从线程模型转换为actor
- CXF实现webservice (二)
- openldap---ldapsearch使用
- Scala包对象不会将伴随对象带入范围?
- 30分钟快速掌握Bootstrap