如何使用for循环在多个文件上运行sed -i?

时间:2019-03-07 19:54:49

标签: bash

我的for循环仅编辑目录中的第一个文件。

脚本:

    #!/bin/bash

for i in $1
do
        sed -i 's/$/\r/' $i
done

目录包含文件test1.txt test2.txt test3.txttest4.txt

我正在尝试通过编辑每个文件来将回车符添加到每个文件中。

要运行脚本,请执行以下操作:

./script.sh ./test*

我相信我不了解for循环到底应该做什么,我认为它将遍历文件并为每个文件运行命令...

1 个答案:

答案 0 :(得分:4)

在脚本运行之前扩展了全局变量。以下两个调用是相同的:

./script.sh ./test*
./script.sh test1.txt test2.txt test3.txt test4.txt

因此,换句话说,您必须遍历所有参数"$@"而不仅仅是$1

#!/bin/bash
for i in "$@"
do
    sed -i 's/$/\r/' "$i"
done