shell脚本之花括号展开序列

shell脚本之花括号展开序列

{1..3}可以展开成1 2 3,那么想动态展开要怎么做呢?

比如想展开i=1, j=4{$i..$j},这就要用到eval才可以,不然无法展开成1 2 3 4这种序列。

具体方法是:

eval echo {$i..$j} 或者 eval “echo {$i..$j}”

两种形式根据情况使用,但从这两句来说第二种更直观一些,因为双引号说明“echo {$i..$j}”是eval的参数。eval的功能就是将其参数展开成shell可执行的代码。所以经过展开其变成echo {1..4} ,这种形式是可以在shell中执行的,这种花括号展开是从bash4.0开始加入的。

eval echo {“1”..”4″}同样可以展开成1 2 3 4的序列,但是echo {“1”..”4″}只能展开成{1..4}。

PS:如果你想通过这个例子考验一下AI也可以,问AI如何在shell的花括号展开中使用变量,例如{$i..$j}这种形式。2023年3月21日我找几个能访问GPT的朋友试了一下,只有GPT4.0可以快速的给出答案,GPT3.5要通过二次引导才可以,new bing通过反复引导也无法给出答案。其它AI甚至让我将bash从4.2升级到4.0,因为花括号扩展是4.0才有的特性。

Comments are closed.