一分钟解决Linux运行sh脚本报错 : No such file or directory问题

当在Linux上运行由Windows创建的sh脚本时,可能会遇到'Nosuchfileordirectory'的错误,这是因为文件的换行符不兼容。解决方法是使用vim编辑器,通过输入':setff=unix'命令转换为UNIX换行符,然后保存退出,即可解决脚本执行问题。

解决Linux运行sh脚本报错 : No such file or directory:

  • 在Linux上运行del_history_file.sh脚本定时删除20天前的历史文件

在这里插入图片描述

  • 报错如下:

在这里插入图片描述

  • 这是由于在windows下编写的脚本文件,放到Linux中无法识别格式,换行符与linux不一致造成,此时用vim命令打开sh脚本,告诉 vi 编辑器,使用unix换行符, 直接输入:set ff=unix,保存并退出即可
  :set ff=unix

在这里插入图片描述

### 解决 `student.sh` 中的 `'No such file or directory'` 错误并实现日志文件的并排比较 当遇到 `"No such file or directory"` 错误时,通常是因为脚本尝试访问不存在的文件或路径配置错误。以下是修复该问题的具体方法以及如何正确实现 `1.log` 和 `2.log` 文件内容的并排比较。 #### 修正后的 Shell 脚本 (`student.sh`) 以下脚本解决了潜在的文件路径问题,并实现了所需的并排比较功能: ```bash #!/bin/bash # 检查所需文件是否存在 if [[ ! -f "./1.log" || ! -f "./2.log" ]]; then echo "Error: Required files './1.log' or './2.log' not found." exit 1 fi # 使用 diff 命令执行并排比较 (-y 参数),并隐藏相同行 (--suppress-common-lines) diff_output=$(diff -y --suppress-common-lines ./1.log ./2.log) # 如果 diff 输出为空,则表示两个文件完全一致 if [[ -z "$diff_output" ]]; then echo "Files '1.log' and '2.log' are identical." else # 显示差异结果 echo "$diff_output" fi ``` --- #### 关键点分析 1. **文件存在性检查** 在脚本开头加入了一段代码来验证 `./1.log` 和 `./2.log` 是否存在于当前工作目录下。如果没有找到这些文件,则打印错误消息并退出脚本[^1]。 2. **使用 `diff` 实现并排比较** - `-y` 参数使 `diff` 将输出设置为两列形式,左边是第一个文件的内容,右边是第二个文件的内容。 - `--suppress-common-lines` 隐藏了两个文件中共有的行,仅显示不同的部分[^2]。 3. **处理无差异情况** 如果两个文件完全相同,`diff` 不会产生任何输出。因此可以通过检测变量 `$diff_output` 是否为空来判断这一点,并给出相应的提示信息[^3]。 4. **相对路径与绝对路径的选择** 确保在调用文件时使用的是相对于脚本运行位置的有效路径。如果不确定具体的工作目录,可以考虑将文件路径改为绝对路径或将它们作为参数传递给脚本[^4]。 --- #### 测试脚本的方法 为了确认脚本能够正常运作,请按照如下步骤测试它: 1. 准备好名为 `1.log` 和 `2.log` 的样本文件放在同一个目录里。 2. 给予 `student.sh` 执行权限: ```bash chmod +x student.sh ``` 3. 运行脚本观察其行为是否符合预期: ```bash ./student.sh ``` 如果有特殊需求(例如更改默认文件名),可扩展此脚本来接受命令行参数指定目标文件的位置和名称。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值