问个问题....有个变量 num=4,想 mkdir /data_{1..$num} 创建 4 个目录,正确做法是什么?

2017-03-22 09:30:30 +08:00
 mrco

如题,我知道 for 循环可以,但是我还是想探究下,大家看看怎么写呢,谢谢哈

1493 次点击
所在节点    问与答
7 条回复
ceyes
2017-03-22 10:08:53 +08:00
`mkdir date_{1..4}` 是可以的,但 `mkdir date_{1..$num}` 就只得到了 date_{1..4},不知道如何多次解引用。

建议,就算最后得到了答案,也不要依赖这种语法糖,不好理解也不好维护……
yorks
2017-03-22 11:37:19 +08:00
man bash
```
The order of expansions is: brace expansion, tilde expansion, parameter, variable and arithmetic expansion and command substitution (done in a left-to-right fashion), word splitting, and pathname expansion.
```

花括号(brace)的展开在变量(variable)的展开之前, 所以你需要 eval .

```bash
num=4; eval mkdir date_{1..$num}
```
ceyes
2017-03-22 11:48:46 +08:00
@yorks
mgna17
2017-03-22 11:53:58 +08:00
直接用 zsh 即可。(不知道是不是歪楼了
mrco
2017-03-22 13:03:57 +08:00
@yorks 吊吊吊!!!~~

我之前只知道 eval `DIRCOLOR`之类的用法,就是 eval 再执行一次`这里面命令`执行的结果
mrco
2017-03-22 13:30:31 +08:00
@yorks 再追问下,如果将$num 放在 for 循环里,eval 应该写在哪里呢?谢谢啦
mrco
2017-03-22 13:33:28 +08:00
@yorks
搞定了.谢谢你的信息

#!/bin/bash
START=1
END=5
for i in $(eval echo "{$START..$END}")
do
echo "$i"
done

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/349320

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX