用于创建多个图像文件升序的shell脚本

时间:2014-11-06 19:29:37

标签: shell for-loop scripting

所以事实是,我正在尝试编写一个以升序创建多个图像文件的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

它返回“坏替代”。这种方法有什么问题吗?

1 个答案:

答案 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