我在连接这个字符串时遇到了麻烦。我的目标是/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/
所以我认为它的第二个子部分有问题。
任何人都可以帮助阐明我如何做到这一点吗?
谢谢!
答案 0 :(得分:3)
你的第一个awk
实例正在捕获所有stdin,所以你的第二个没有读取任何内容。无论什么读取标准输入都必须是一个命令。
cat test.txt | cd /folder/p/`awk '{print substr($0,0,1)"/"substr($0,2,1)}'`
答案 1 :(得分:1)
FOO=$(< test.txt)
cd /folder/p/${FOO:0:1}/${FOO:1:1}
答案 2 :(得分:0)
您假设第二次拨打awk
的电话会从test.txt
获得,但事实并非如此。
来自cat test.txt
的文本通过管道发送到管道后面的命令,并且子shell中的命令(第一个awk
)接收到所有输入,第二个awk
没有输入,因为kojiro已经回答了。
虽然合并两个awk
命令将解决问题,但不能保证这在其他方面有效
炮弹。因为很多人一般会混淆bash
和'shell',所以我认为值得注意的是,Beta可以使用更便携的解决方案。