Linux 如何拆分bash命令?
我有以下命令Linux 如何拆分bash命令?,linux,bash,Linux,Bash,我有以下命令 mkdir -p /tmp/{A,B,C,D} 上面的命令工作正常,但下面的命令与bash不同,将B、C和D视为不同的命令: 我想要的东西如下: mkdir -p /tmp/{A, B, C, D} 正如在评论中所提到的,你可以在换行之前用反斜杠,但是任何空格都会被认为是有意义的,整个事情最终会变得相当丑陋。作为一种更美观的解决方法,您可以将目录名放入数组中 dirs=( a b c d ) mkdir -p "${dirs[@]/#//tm
mkdir -p /tmp/{A,B,C,D}
上面的命令工作正常,但下面的命令与bash不同,将B、C和D视为不同的命令:
我想要的东西如下:
mkdir -p /tmp/{A,
B,
C,
D}
正如在评论中所提到的,你可以在换行之前用反斜杠,但是任何空格都会被认为是有意义的,整个事情最终会变得相当丑陋。作为一种更美观的解决方法,您可以将目录名放入数组中
dirs=(
a
b
c
d
)
mkdir -p "${dirs[@]/#//tmp/}"
构造“${array[@]/#/prefix)”
复制array
中的值,并在每个值之前添加前缀prefix
不过,这相对来说比较模糊;除非您创建的真实目录名非常长且繁琐,否则我建议您直接将它们写出来
如注释中所述,数组和
{A,B,C,D}
都是Bash构造,因此如果调用sh
而不是Bash
,则不可用(即使sh
是Bash
的符号链接;Bash会注意到,并启用POSIX模式).搜索bash行继续。在每行之后添加\项。为什么要用丑陋的内容替换美丽的内容?如果脚本由sh
运行,则不能使用bash
构造。在由bash
运行的脚本中,链接的答案应该有效。这与链接的答案无关,但可能与此问题相关n、 所以,再次,慢慢地说:如果你想使用bash
构造,不要使用sh
。如果你想使用bash
构造,请使用bash
。谢谢tripleee。你救了我一天。事实上,目录的排序非常繁琐。使用数组会很容易。这里建议使用接受和/或向上投票来表达感谢.轻推和眨眼。