我有以下命令
mkdir -p /tmp/{A,B,C,D}
以上命令工作正常,但不是以下作为bash考虑B,C和D作为不同的命令:
我想要以下内容:
mkdir -p /tmp/{A,
B,
C,
D}
答案 0 :(得分:3)
正如评论中所指出的那样,你可以在换行符之前使用反斜杠来做到这一点,但是任何空格都会被认为是重要的,整个事情最终会变得相当难看。作为一种美学上更令人愉快的解决方法,您可以将目录名称放在一个数组中。
dirs=(
a
b
c
d
)
mkdir -p "${dirs[@]/#//tmp/}"
构造"${array[@]/#/prefix)"
再现array
中的值,每个值前加prefix
。
但这是相对模糊的;除非您创建的真实目录名称非常冗长且繁琐,否则只需用手写出来就是我的建议。
如评论中所述,数组和{A,B,C,D}
都是Bash结构,因此如果您调用sh
而不是bash
,则无法使用(即使sh
是bash
符号链接到php -v
; Bash会注意到,并启用POSIX模式)。