Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何拆分bash命令?_Linux_Bash - Fatal编程技术网

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。你救了我一天。事实上,目录的排序非常繁琐。使用数组会很容易。这里建议使用接受和/或向上投票来表达感谢.轻推和眨眼。