我对在 Linux 中创建脚本还很陌生(我也不太清楚应该使用哪些术语,比如 bash/shell),但是我在脚本中有以下命令,我想用一些参数来执行它
写入循环
#!/bin/bash
echo $1
echo $2
for i in {1..$1}; do printf "file '%s'\n" $2 >> list.txt; done
我尝试在终端中使用两个参数执行此操作:循环次数(150)和循环文件名(“loop.mp4”)
./write_loop.sh 150 loop.mp4
参数可以很好地传递给脚本,但由于某种原因,for 循环不起作用。当我手动更改$1
为150
写入循环它确实有效,所以我不确定问题是什么(也许参数是不同类型的?)。任何帮助都值得感激。
答案1
变量不能用于范围扩展{INT..INT}
,因此回退到使用seq
如下所示的相关帖子。或者,使用类似 C 的 for 循环,因为bash
无论如何你都会使用:
#!/bin/bash
echo $1
echo $2
echo {1..$1}
for((i=1;i<=$1;i++)); do
printf "'%s'\n" "$2"
done
或者 POSIX-ly:
#!/bin/bash
echo $1
echo $2
i=1
while [ $i -le $1 ]; do
printf "'%s'\n" "$2"
i=$((i+1))
done
注意,我printf
出于测试目的更改了部分内容。请根据您的需要进行调整。