linux - bash: [: 1+1: 预期的整数表达式

标签 linux bash

我有一个包含 40 个子目录的主目录,这些子目录的名称分别为 [Set 1][Set 2] ... [Set 40] ,每张包含 20 张壁纸,名称分别为 1.jpg2.jpg、... 20.jpg。我想将所有这些壁纸移动到主目录并将它们重命名为 1.jpg2.jpg ... 800.jpg。我编写了以下 Bash 脚本但出现错误。

i=1; j=1; k=1;
while [ $i -ne 41 ]; do
  j=1;
  while [ $j -ne 21 ]; do
    mv \[Set\ $i\]/$j.jpg $k.jpg;
    j=$j+1;
    k=$k+1;
  done;
  i=$i+1;
done
bash: [: 1+1: integer expression expected
bash: [: 1+1: integer expression expected

我哪里出错了?

最佳答案

在 bash 中,您将数学/算术运算包含在 $(()) 中,因此

i=1; j=1; k=1; 
while [ $i -ne 41 ]; do 
    j=1
    while [ $j -ne 21 ]; do 
        mv "[Set ${i}]/${j}.jpg" $k.jpg
        j=$(($j+1)) k=$(($k+1))
    done
    i=$(($i+1))
done

应该做你想做的..

关于linux - bash: [: 1+1: 预期的整数表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34285831/

相关文章:

mysql - xmalloc : cannot allocate 16 bytes copying mysql database from 1 remote to another

bash - 将文件中的键/值参数读取到 shell 脚本中

linux - 服务器上带有存储库查看器的独立 git 二进制文件

linux - 如何将文本文件中的一定数量的数字数据添加到 gnuplot 中?

linux - 基于两个条件的嵌套查找

linux - 空闲超时 Bourne 风格的 shell

java - Gammu 同时使用来自 ssh 的两个或多个 java 应用程序发送短信

bash - 存在字符串时如何在两个定界符之间提取文本

linux - 使用 wget 访问视频下载链接

C 宏、makefile 和表达式无法按预期工作