我正在尝试创建一个shell脚本,该脚本将接受命令行参数并基于此创建一个或多个文件。我知道每个命令行参数都存储在$ 0,$ 1,$ 2 ......等等,所以这就是这个循环的基础。
for i in $(eval echo {1..$#})
do
echo "File I'm about to edit/create: "$i""
touch "$i"
done
然而,$ i被视为数字1,2,而不是$ 1中的数值。
答案 0 :(得分:2)
您需要使用间接参数扩展:
echo "File...: ${!i}"
touch "${!i}"
然而,迭代参数本身要简单得多:
for f in "$@"; do
echo "File...: $f"
touch "$f"
done