質問: ソーシング時に変数をbashスクリプトに渡す 私がmain.shにいるとします:$name="a string" if [ -f $home/install.sh ] . $home/install.sh $name fi そしてinstall.sh:echo $1 これは"a string"をエコーすることになっていますが、何もエコーしません。どうして?
回答: michael mrozek はほとんどの問題をカバーしており、bashを使用しているため、彼の修正は機能します。引数付きのスクリプトを調達する機能はバシズムであるという事実に興味があるかもしれません。 shまたはdashでは、ソーススクリプトへの引数は無視され、main.shは$1への引数を参照するため、main.sh.は何もエコーしません。shでスクリプトを入手すると、入手したスクリプトのテキストを、それを入手したファイルにコピーして貼り付けたようになります。次の点を考慮してください(マイケルが推奨する修正を加えました)。$ bash ./test.sh a string $ sh ./test.sh $ sh ./test.sh "hello world" hello world