2017-04-05 12 views
0

私は奇妙な問題で立ち往生しています。プロセス置換は、bashスクリプトから呼び出されたときは機能しませんが、端末からそれを撮影すると機能します。プロセス置換がbashスクリプトで機能しない

ここは例です:端末で実行中。ここで

terminal>echo "$x" 
a b c 
d e f 
g h i 
j k l 

terminal>echo "$y" 
1 
2 
3 
4 

terminal>paste <(echo "$x") <(echo "$y") -d' ' 
a b c 1 
d e f 2 
g h i 3 
j k l 4 

は一例です:サンプルスクリプト


#!/bin/bash 
    x='a b c 
    d e f 
    g h i 
    j k l' 


    y='1 
    2 
    3 
    4' 

    paste <(echo "$x") <(echo "$y") -d' ' 

私は、スクリプトの上に、私は次のエラーを取得するとき:

test: line 12: syntax error near unexpected token `(' 
test: line 12: `paste <(echo "$x") <(echo "$y") -d' '' 

後は、シェルIの詳細です使用しています。

echo $SHELL 
/bin/bash 
bash --version 
GNU bash, version 4.2.47(1)-release (x86_64-suse-linux-gnu) 

この問題を回避する方法はありますか?必ずしも私がプロセス置換に固執したいとは限りません。 bashはPOSIXモードであるとき

a b c 1 
d e f 2 
g h i 3 
j k l 4 
+2

あなたのスクリプトはDebian jessieのmybash 4.3.30で動作します。投稿したスクリプトは実行しようとした実際のスクリプトですか? –

+0

はまったく同じです。 –

+1

これは正常に動作しています。 'CRLF' DOSの終了をチェックしましたか? Windowsのエディタからコピーされている可能性がありますか? – Inian

答えて

2

プロセス置換動作しません。

がo/pが望ましいです。 POSIXを無効にして、もう一度やり直してください。

無効にする:これにより、プロセス置換が機能します。

set +o posix 

有効にすると、:これによりプロセス置換が機能しなくなります。

set -o posix 
+0

編集のおかげで男。私は地下鉄の地下鉄に乗っていたので、全然答えられませんでした。 –

関連する問題