如何在Bash脚本中用if判断函数退出状态并修复脚本错误
Bash脚本检查命令退出状态的错误修复
你的脚本存在两个关键语法错误,导致运行时出现syntax error: unexpected end of file,以下是具体修改点:
1. 函数调用语法错误
原脚本最后一行check_command()是错误写法——Bash中调用函数不需要加括号,括号会被解析为新的函数定义开头,但后续没有闭合的代码块,因此触发"意外文件结束"错误。
修改后:check_command
2. if条件语句的空格缺失
if [$? -eq 0]中,[(test命令的简写)的右侧、]的左侧必须保留空格,否则Bash会将[$?识别为一个不存在的命令,引发语法错误。
修改后:if [ $? -eq 0 ]
修复后的完整脚本
#!/bin/bash check_command(){ if [ $? -eq 0 ] then echo "Command Executed" else echo "Command Failed" fi } ls -la check_command
额外优化建议(可选)
依赖全局的$?可能在复杂脚本中出现状态覆盖问题,更可靠的方式是直接将命令的执行结果传入函数:
#!/bin/bash check_command(){ if [ $1 -eq 0 ] then echo "Command Executed" else echo "Command Failed" fi } ls -la check_command $?
内容的提问来源于stack exchange,提问作者Mahmoud Abdel-Rahman
相关产品推荐
相关产品推荐

