WEEKS_TO_SAVE=4
mkdir -p weekly.{0..$WEEKS_TO_SAVE}
给我一个名为每周的文件夹。{0..4}
创建我缺少的文件夹时,花括号扩展有什么秘密吗?
WEEKS_TO_SAVE=4
mkdir -p weekly.{0..$WEEKS_TO_SAVE}
给我一个名为每周的文件夹。{0..4}
创建我缺少的文件夹时,花括号扩展有什么秘密吗?
bash
做brace expansion
之前variable expansion
,所以你得到weekly.{0..4}
。
因为结果是可预测且安全的(不要信任用户输入),您可以eval
在您的情况下使用:
$ WEEKS_TO_SAVE=4
$ eval "mkdir -p weekly.{0..$((WEEKS_TO_SAVE))}"
注意:
eval
是邪恶的eval
小心使用在这里,$((..))
用于强制将变量评估为整数表达式。
花括号不支持 BASH 中的变量,您可以这样做:
for (( c=0; c<=WEEKS_TO_SAVE; c++ ))
do
mkdir -p weekly.${c}
done
另一种不使用 eval 并且只调用 mkdir 一次的方法:
WEEKS_TO_SAVE=4
mkdir -p $(seq -f "weekly.%.0f" 0 $WEEKS_TO_SAVE)
如果你碰巧zsh
安装在你的盒子上,你编写的代码将与 Z-shell 一起使用,如果你使用#!/bin/zsh
你的解释器:
$ WEEKS_TO_SAVE=4
$ echo {0..$WEEKS_TO_SAVE}
0 1 2 3 4