【发布时间】:2018-02-25 01:12:14
【问题描述】:
编辑: 我意识到我当前的代码是垃圾,但我之前尝试过的其他方法也没有奏效。问题是我在 Windows 上的 Notepad++ 中编辑了文件,并让它们在 Linux 上运行。程序 dos2unix 可以解决问题。
解决方案: 我在 Windows 中使用 Notepad++ 来编写导致问题的文件。通过 dos2unix 运行文件修复了它。
我编写了一个小 bash 脚本,它应该删除 $2 的每一行,其中包含一个在 $1 中指定的单词,并将输出写入 $3。但不知何故,它并没有按应有的方式工作。
#!/bin/bash
set -f
while IFS='' read -r i || [[ -n "$i" ]]; do
sed -i "/$i/d" "$2"
done < "$1"
编辑:
示例
文件 1.test:
123
678
456
文件 2.test:
dasdas123dasd
3fsef344
678 3423423
r23r23rfsad
456 dasdasd
运行脚本:
./script.sh 1.test 2.test
输出应该是:
3fsef344
r23r23rfsad
但实际上是:
dasdas123dasd
3fsef344
678 3423423
r23r23rfsad
【问题讨论】:
-
请澄清您所说的“不能正常工作”是什么意思。两个输入文件的示例,您获得的输出文件和您想要 获得的输出文件会很好。见"How to create a Minimal, Complete, and Verifiable example"。顺便说一句,您还应该通过shellcheck.net 运行您的代码并更正它找到的内容。
-
我添加了一个示例并更改了我的代码,以便 shellcheck 不会检测到问题。
-
pluse-uno 用于提高你的 Q。祝你好运。