在bash中扩展{..}中的变量?

氙气

我有以下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无法正常工作”。以及如何使它起作用?

提前致谢。

SheetJS

序列扩展仅在文字数字上发生。序列扩展后会发生变量扩展:

序列表达式的格式为{x..y},其中x和y是整数或单个字符。提供整数后,表达式将扩展为x和y之间(包括两端)的每个数字。提供字符后,表达式将按字典顺序扩展到x和y之间(包括x和y)的每个字符。请注意,x和y必须属于同一类型。

括号扩展在执行任何其他扩展之前执行,并且其他扩展专用的任何字符都保留在结果中。它严格是文字的。Bash对扩展的上下文或大括号之间的文本不应用任何语法解释。

对于您的情况,可以使用eval:

m=`eval echo {$j..$k}.jpg`

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章