我的for循环仅编辑目录中的第一个文件。
脚本:
#!/bin/bash
for i in $1
do
sed -i 's/$/\r/' $i
done
目录包含文件test1.txt
test2.txt
test3.txt
和test4.txt
。
我正在尝试通过编辑每个文件来将回车符添加到每个文件中。
要运行脚本,请执行以下操作:
./script.sh ./test*
我相信我不了解for循环到底应该做什么,我认为它将遍历文件并为每个文件运行命令...
答案 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