为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

使用Bash变量进行扩展 - {0 .. $ foo}WEEKS_TO_SAVE=4mkdir -p weekly.{0..$WEEKS_TO_SAVE}给我一个名为daily的文件夹。{0..4}在创建我缺少的文件夹时是否有大括号扩展的秘密?
查看完整描述

3 回答

?
忽然笑

TA贡献1806条经验 获得超5个赞

bashbrace expansion之前variable expansion,让您得到weekly.{0..4}
因为结果是可预测且安全的(不要信任用户输入),所以您可以eval在您的情况下使用:

$ WEEKS_TO_SAVE=4$ eval "mkdir -p weekly.{0..$((WEEKS_TO_SAVE))}"

注意

  1. eval 是邪恶的

  2. eval小心使用

这里,$((..))用于强制将变量计算为整数表达式。


查看完整回答
反对 回复 2019-07-30
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

大括号不支持BASH中的变量,您可以这样做:

 for (( c=0; c<=WEEKS_TO_SAVE; c++ ))
 do
    mkdir -p weekly.${c}
 done


查看完整回答
反对 回复 2019-07-30
?
莫回无

TA贡献1865条经验 获得超7个赞

另一种没有eval并只调用mkdir一次的方法:

WEEKS_TO_SAVE=4mkdir -p $(seq -f "weekly.%.0f" 0 $WEEKS_TO_SAVE)


查看完整回答
反对 回复 2019-07-30
  • 3 回答
  • 0 关注
  • 469 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信