我有以下shell脚本
cat test.sh
j=00000001;
k=00000005;
l=$(echo {00000001..00000005}.jpg);
m=$(echo {$j..$k}.jpg);
ls $l
ls $m
这是输出
./test.sh
00000001.jpg 00000002.jpg 00000003.jpg 00000004.jpg 00000005.jpg
ls: cannot access {00000001..00000005}.jpg: No such file or directory
我的疑问是“为什么ls $ m无法正常工作”。以及如何使它起作用?
提前致谢。林
序列扩展仅在文字数字上发生。序列扩展后会发生变量扩展:
序列表达式的格式为{x..y},其中x和y是整数或单个字符。提供整数后,表达式将扩展为x和y之间(包括两端)的每个数字。提供字符后,表达式将按字典顺序扩展到x和y之间(包括x和y)的每个字符。请注意,x和y必须属于同一类型。
括号扩展在执行任何其他扩展之前执行,并且其他扩展专用的任何字符都保留在结果中。它严格是文字的。Bash对扩展的上下文或大括号之间的文本不应用任何语法解释。
对于您的情况,可以使用eval:
m=`eval echo {$j..$k}.jpg`
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句