我无法将这个字符串连接在一起。我的目标是拥有/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/
,所以我认为它的第二个 substr 部分有问题。
谁能帮助阐明我如何做到这一点?
谢谢!
我无法将这个字符串连接在一起。我的目标是拥有/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/
,所以我认为它的第二个 substr 部分有问题。
谁能帮助阐明我如何做到这一点?
谢谢!
您的第一个awk
实例正在捕获所有标准输入,因此您的第二个实例没有读取其中的任何内容。任何读取 stdin 的内容都必须是单个命令。
cat test.txt | cd /folder/p/`awk '{print substr($0,0,1)"/"substr($0,2,1)}'`
FOO=$(< test.txt)
cd /folder/p/${FOO:0:1}/${FOO:1:1}
你假设你的第二个电话awk
会从 得到一些东西test.txt
,但事实并非如此。文本 fromcat test.txt
在管道之后通过管道传输到命令,并且子 shell(第一个awk
)中的命令接收所有输入,第二个没有输入awk
,因为 kojiro 已经回答了。
虽然合并这两个awk
命令将解决问题,但不能保证这将在其他 shell 中工作。因为很多人bash
通常会与“shell”混淆,所以我认为值得注意的是,Beta 提供的更便携的解决方案。