代码之家  ›  专栏  ›  技术社区  ›  turnip

如何在bash中链接multple字符串操作命令?[副本]

  •  0
  • turnip  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有一个从文件列表创建目录的方法:

    for file in $(ls *.txt); do 
        folder=${file//.txt/ }; 
        folder=${folder//./'/'}; 
        folder=${folder//[[:space:]]/}; 
        mkdir -p $folder;
    done
    

    我能链接3个字符串操作命令吗 folder 排成一行?

    我试了好几次都没有成功。是否可以使用 | 不知怎么回事?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Adam Katz Huang    6 年前

    巴什不能这么做,但是 Z Shell (zsh) (非常相似)可以嵌套替换:

    for file in *.txt; do
        folder=${${${file//.txt/ }//./'/'}//[[:space:]]/}; 
        mkdir -p $folder;
    done
    

    (你不需要这么做 $(ls *.txt) (正在分析 ls 就这样 dangerous :你失去了所有的空间),因为你可以给它 *.txt ,它可以正确处理文件名中的空格。这在任何posix shell中都有效。)