For 循环在终端中工作但在 shell 脚本中不工作
For loop working in terminal but not in shell script
我正在尝试重命名文件。
$ls
1.jpg 12.jpg 15.jpg 18.jpg 3.png 6.jpg 9.png
10.jpg 13.jpg 16.jpg 19.jpg 4.jpg 7.png
11.jpg 14.jpg 17.jpg 2.jpg 5.jpg 8.jpg
文件 {1..9}.*
从 1.jpg
到 01.jpg
,不考虑扩展名。
我在终端中尝试了以下 for
循环,它运行良好。
$for i in {1..9}.*;do mv "$i" 0"$i";done
当我在 shell 脚本中编写相同内容时,它不起作用。
#!/bin/sh
for i in {1..9}.*;do mv "$i" 0"$i";done
报错如下
mv cannot stat '{1..9}.*':No such file or directory
我认为 posix shell 不支持 {1..9}.*
语法。
问:在 posix 中这相当于什么?
-谢谢。
您可以使用通配符模式 [1-9].*
。
#!/bin/sh
for i in [1-9].*
do
mv "$i" 0"$i"
done
我正在尝试重命名文件。
$ls
1.jpg 12.jpg 15.jpg 18.jpg 3.png 6.jpg 9.png
10.jpg 13.jpg 16.jpg 19.jpg 4.jpg 7.png
11.jpg 14.jpg 17.jpg 2.jpg 5.jpg 8.jpg
文件 {1..9}.*
从 1.jpg
到 01.jpg
,不考虑扩展名。
我在终端中尝试了以下 for
循环,它运行良好。
$for i in {1..9}.*;do mv "$i" 0"$i";done
当我在 shell 脚本中编写相同内容时,它不起作用。
#!/bin/sh
for i in {1..9}.*;do mv "$i" 0"$i";done
报错如下
mv cannot stat '{1..9}.*':No such file or directory
我认为 posix shell 不支持 {1..9}.*
语法。
问:在 posix 中这相当于什么?
-谢谢。
您可以使用通配符模式 [1-9].*
。
#!/bin/sh
for i in [1-9].*
do
mv "$i" 0"$i"
done