繁体   English   中英

如何拆分bash命令?

[英]How to split a bash command?

我有以下命令

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就不可用(即使shbash的符号链接; Bash会注意到,并启用POSIX模式)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM