使用Bash变量进行扩展 - {0 .. $ foo}

使用Bash变量进行扩展 - {0 .. $ foo}

WEEKS_TO_SAVE=4mkdir -p weekly.{0..$WEEKS_TO_SAVE}

给我一个名为daily的文件夹。{0..4}

在创建我缺少的文件夹时是否有大括号扩展的秘密?


慕桂英4014372
浏览 472回答 3
3回答

忽然笑

bash做brace expansion之前variable expansion,让您得到weekly.{0..4}。因为结果是可预测且安全的(不要信任用户输入),所以您可以eval在您的情况下使用:$ WEEKS_TO_SAVE=4$ eval "mkdir -p weekly.{0..$((WEEKS_TO_SAVE))}"注意:eval 是邪恶的eval小心使用这里,$((..))用于强制将变量计算为整数表达式。

慕无忌1623718

大括号不支持BASH中的变量,您可以这样做:&nbsp;for&nbsp;((&nbsp;c=0;&nbsp;c<=WEEKS_TO_SAVE;&nbsp;c++&nbsp;)) &nbsp;do &nbsp;&nbsp;&nbsp;&nbsp;mkdir&nbsp;-p&nbsp;weekly.${c} &nbsp;done

莫回无

另一种没有eval并只调用mkdir一次的方法:WEEKS_TO_SAVE=4mkdir&nbsp;-p&nbsp;$(seq&nbsp;-f&nbsp;"weekly.%.0f"&nbsp;0&nbsp;$WEEKS_TO_SAVE)
打开App,查看更多内容
随时随地看视频慕课网APP