linux shell IF判断时报not found错误解决方法

最近一个项目需要写一个linux shell脚本,在linux指定目录下遍历*.sql文件,如果有的话,执行文件(文件里面是一个update语句),在遍历文件夹时总是报一个[sql: not found的错误,差点崩溃了,后来才知道原因,特意给大家分享下,希望其他人少走弯路


原来if判断那块有个坑,if空格[空格$? -eq 0空格]; if后面加空格,条件两边也得加空格,以下是数字比较和字符串比较例子

---------number

if [ 1 -eq 2 ];then

fi


--------string

if [ 'a' = 'v' ];then

fi


希望能帮到其他人!:)

### Shell脚本保存并正确退出的方法Linux Shell 脚本中,`exit` 命令用于终止脚本的运行,并可以指定一个退出状态码。为了确保脚本能够正确退出,通常会结合 `$?` 特殊变量来获取上一个命令或函数的退出状态码。 以下是实现方法的具体说明: #### 1. 使用 `exit $?` 来保持一致性 当希望脚本的退出状态与其最后一个执行的命令的状态一致时,可以直接使用 `exit $?`[^1]。这种方式使得调用者可以通过检查脚本的退出状态来判断其执行情况。 ```bash #!/bin/bash # 执行某些操作 command_to_execute # 使用 $? 获取最后一条命令的结果,并以此作为脚本的退出状态 exit $? ``` 上述代码片段中的 `command_to_execute` 可以替换为任何实际的操作指令。通过 `exit $?`,脚本将继承该命令的成功与否标志。 #### 2. 明确设置自定义退出状态 除了依赖于前一命令的状态外,在特定条件下也可以手动设定退出状态码。例如,如果检测到某种错误条件,则可显式地给出非零值表示异常结束。 ```bash #!/bin/bash if [[ ! -f "/path/to/file" ]]; then echo "File not found!" exit 1 # 自定义错误代码表明文件缺失的情况 fi process_file /path/to/file || { echo 'Processing failed'; exit 2; } echo "All operations completed successfully." exit 0 ``` 这里展示了两种可能的情形:一是当目标路径下的文件不存在时报错并立即停止程序;二是处理过程中出现问题也会提前中断流程,同时赋予不同的数值反映不同类型的失误情形。 #### 3. 子脚本调用注意事项 当在一个主脚本里调用了其他子脚本的时候,应该考虑到这些被调用的小型辅助脚本同样会影响整体行为模式。因此建议始终遵循良好的实践原则——即让每一个单独的部分都具备清晰明了的行为特征以及合理的反馈机制。 - **捕获子脚本返回值** 如果需要知道某个已加载完成的任务是否有误发生过的话,那么可以在每次启动之后立刻查询它的结果存储位置(`$?`)。 ```bash ./child_script.sh result=$? if [ "$result" -ne 0 ];then echo "Child script exited with error code ${result}" else echo "Child script executed successfully" fi ``` 此部分强调的是对于复杂项目结构下多层嵌套关系管理的重要性,只有这样才能构建起稳定可靠的自动化解决方案体系。 --- ### 总结 综上所述,合理运用 `exit` 和 `$?` 不仅可以让单个独立单元表现出应有的特性,而且还能促进整个应用程序之间的良好交互体验。记住,默认情况下所有的正常完结都应该传递回零给外部环境去识别确认无差错状况存在即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值