この文字列を連結するのに問題があります。私の目標は/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/
しているので、2番目の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/
しているので、2番目のsubstr部分に問題があると思います。
誰かが私がこれを行う方法に光を当てるのを手伝ってもらえますか?
ありがとう!
最初のawk
インスタンスはすべてのstdinをキャプチャしているため、2番目のインスタンスはその中の何も読み取っていません。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
への2回目の呼び出しは、から何かを取得すると想定していますがtest.txt
、取得しません。からのテキストcat test.txt
はパイプの後にコマンドにパイプされ、サブシェル(最初のawk
)のコマンドはすべての入力を受け取り、2番目の入力は残しません。これawk
はkojiroがすでに応答しているためです。
両方のコマンドをマージawk
すると問題は解決しますが、これが他のシェルで機能することは保証されていません。多くの人bash
が一般的に「シェル」と混同しているので、よりポータブルなソリューションがベータ版で作成されたものになることは注目に値すると思います。