所以事实是,我正在尝试编写一个以升序创建多个图像文件的shell脚本,但是,只有一位数的文件必须首先带零。我是初学者并在整个互联网上搜索我发现在索引系统方面存在一些语法差异,因此在我的计算机上,以下“for”语法工作正常,但我确信有更好的方法那个。在那里:
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
if (${i:0:1} == "0") then
touch "0${i}.jpg"
else
touch "$i.jpg"
fi
done
它返回“坏替代”。这种方法有什么问题吗?
答案 0 :(得分:0)
for i in {0..15}; do printf -v name "%02i.jpg" $i; touch "$name" ; done
或者,如果它更容易阅读:
for i in {0..15}; do
printf -v name "%02i.jpg" $i
touch "$name"
done
完成后,将创建以下文件:
$ ls
00.jpg 01.jpg 02.jpg 03.jpg 04.jpg 05.jpg 06.jpg 07.jpg 08.jpg 09.jpg 10.jpg 11.jpg 12.jpg 13.jpg 14.jpg 15.jpg
for i in {0..15}; do
这会启动循环。
printf -v name "%02i.jpg" $i
这将创建一个具有所需格式的shell变量name
。 %02i
指示printf
使用零填充在两个空格中写出数字。
touch "$name"
这会创建文件
done
这表示循环结束。
从问题中的脚本开始,if
语句需要进行一些更改。以下作品:
for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
do
if [ "$i" -le 9 ]; then
touch "0${i}.jpg"
else
touch "$i.jpg"
fi
done