【发布时间】:2019-05-29 15:07:25
【问题描述】:
我正在尝试运行一个 shell 脚本,该脚本循环遍历我在执行 shell 脚本时指定的目录中的所有文件,删除文件中的所有逗号,并将其保存为相同的文件名。
问题是它删除了每个文件中的所有内容,我不确定为什么,但相信它与"$filename"; 有关。我也试过把它放在括号里,但我是 Bash 的新手。
我这样运行它:
NaN$ ./remove_commas.sh /path/to/dir
./remove_commas.sh
#!/bin/bash
dir="$@"
for filename in $dir/*; do
echo "$filename"
cat "$filename" | tr -d ',' > "$filename";
done
【问题讨论】:
-
> "$filename"实际上发生在cat之前并覆盖文件的内容!将输出保存到一个新文件中,并在tr完成后使用mv将旧文件替换为新文件。我刚刚链接的另一个问题看起来有一些可能对您有所帮助的答案(例如,sponge)。