2017-01-18 12 views
0

私はこの行を含むbashスクリプトを持っている:悪い置換

dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

これはOSX上の細かい動作します。私はそれがDebianを使用してドッカーコンテナにスクリプトを移動する移動すると

はしかし、それはこのメッセージで上の行に失敗します。

Bad substitution 

これがなぜ起こるか任意のアイデア?

+2

スクリプトのシバンとは何ですか? '#!/ bin/sh'はbashではありません。 ( '/ bin/sh'がbashへのシンボリックリンクとして実装されていてもPOSIXモードで動作し、標準への多くの拡張を無効にします)。完全なbash構文が必要な場合、シバン*は '#!/ bin/bash'でなければなりません。 –

+1

(同様に 'sh yourscript'でスクリプトを実行すると、シェルが'#!/ bin/bash'で始まる場合でもPOSIXベースライン機能を提供することが保証されたシェルで解釈されます)。 –

答えて

1

bashではなくdashシェルを使用しています。

次の項目をチェックしてください:ls -la /proc/$$/exe

+0

'ls -la/proc/$$/exe'の結果は ' lrwxrwxrwx 1 root root 0 1月16日17時20分/ proc/6/exe - >/bin/bash'になりますので、 'ダッシュ' – octavian

+0

bashを使用している場合は、スクリプトがスタンドアロン、またはソースと呼ばれるかどうかを確認するのが最も安全です: – Shoham

+0

[-z" $ {BASH_SOURCE} "]; SCRIPTPATH = $ 0 else SCRIPTPATH = $ {BASH_SOURCE [0]} fi – Shoham

関連する問題