我写了一个小脚本来旋转目录的所有奇数图片,但我无法让它工作。这是代码。
#!/bin/bash
count=1
for picture in `ls -v *.png`
do
if ["$picture" == "picture_$count.png"]
then
mogrify -rotate 90 "$picture"
count=$(($count+2))
fi
done
Run Code Online (Sandbox Code Playgroud)
有什么建议?
相反,只需让 shell 为您抓取所有奇数文件即可。它既安全又简单:
#!/bin/bash
for picture in *[13579].png
do
mogrify -rotate 90 "$picture"
done
Run Code Online (Sandbox Code Playgroud)
[]在 shell glob 中匹配任何单个字符,因此通过列出所有奇数数字,完整模式匹配当前目录中以odd_digit .png结尾的任何文件。无需维护运行计数,并且由于文件名扩展(即 shell globbing)是命令行在执行之前发生的最后一件事,因此它不会被带有时髦字符的文件名绊倒。
从而与您的原始脚本的具体问题是什么,它是作为nullterminatedstring指出的那样,你需要周围的空间[,并]在该if行。那是因为[不是 的特殊语法if,它只是另一个命令:/bin/[,它是test命令的同义词。([出于性能原因,您的 shell 可能提供了它自己的内置版本,但它的行为仍应与外部命令相同,包括所有解析限制。)
没有[and之间的空格"$picture",你告诉你bash运行一个命令,类似于[picture_1.png有两个参数的东西:==and picture_1.png]。由于您的计算机上可能没有调用命令[picture_1.png,因此您的脚本将失败。
周围的空间[和],你会运行命令[用四个参数:picture_1.png,==,picture_1.png,和]。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |