使用Bash变量进行扩展 - {0 .. $ foo}WEEKS_TO_SAVE=4mkdir -p weekly.{0..$WEEKS_TO_SAVE}给我一个名为daily的文件夹。{0..4}在创建我缺少的文件夹时是否有大括号扩展的秘密?
3 回答
忽然笑
TA贡献1806条经验 获得超5个赞
bash
做brace expansion
之前variable expansion
,让您得到weekly.{0..4}
。
因为结果是可预测且安全的(不要信任用户输入),所以您可以eval
在您的情况下使用:
$ WEEKS_TO_SAVE=4$ eval "mkdir -p weekly.{0..$((WEEKS_TO_SAVE))}"
注意:
eval
是邪恶的eval
小心使用
这里,$((..))
用于强制将变量计算为整数表达式。
慕无忌1623718
TA贡献1744条经验 获得超4个赞
大括号不支持BASH中的变量,您可以这样做:
for (( c=0; c<=WEEKS_TO_SAVE; c++ )) do mkdir -p weekly.${c} done
莫回无
TA贡献1865条经验 获得超7个赞
另一种没有eval并只调用mkdir一次的方法:
WEEKS_TO_SAVE=4mkdir -p $(seq -f "weekly.%.0f" 0 $WEEKS_TO_SAVE)
添加回答
举报
0/150
提交
取消