代码之家  ›  专栏  ›  技术社区  ›  d-_-b

bash中的串联字符串

  •  1
  • d-_-b  · 技术社区  · 13 年前

    我很难将这个字符串连接在一起。我的目标是 /folder/p/t/e

    test.txt包含字符串“test”。

    cat test.txt|cd /folder/p/`awk '{print substr($,0,1)}'`/`awk '{print substr($0,1,1)}'`
    

    它正在输出 /folder/p/t/ 所以我认为它的第二个子部分有问题。

    有人能帮我解释一下我该怎么做吗?

    谢谢

    3 回复  |  直到 13 年前
        1
  •  3
  •   kojiro    13 年前

    你的第一个 awk 实例正在捕获所有的stdin,所以您的第二个实例没有读取其中的任何内容。读取stdin的内容必须是一个命令。

    cat test.txt | cd /folder/p/`awk '{print substr($0,0,1)"/"substr($0,2,1)}'`
    
        2
  •  1
  •   chepner    13 年前
    FOO=$(< test.txt)
    cd /folder/p/${FOO:0:1}/${FOO:1:1}
    
        3
  •  0
  •   nemo    13 年前

    你假设你的第二个电话 awk 会从中得到一些东西 test.txt ,但事实并非如此。 来自的文本 cat test.txt 在管道和子shell中的命令(第一个 锥子 )接收所有输入,第二个不留输入 锥子 ,正如小二郎已经回答的那样。

    合并两者时 锥子 命令将解决问题,不能保证这将在其他 贝壳。因为很多人混淆了 bash 对于“shell”,我认为值得注意的是,Beta制作的解决方案将是一个更便携的解决方案。

    推荐文章