0

私はbashスクリプトを書いていますが、別のユーザーに切り替えたいので、ユーザーbash_profileのMYDIRで指定されたディレクトリにcdして、内容を一覧表示します。

現在私は持っています:

read username
su - app${username} -c ls $MYDIR

出力は何もありません。私の最初の推測では、手動で実行すると正常に機能するため、ユーザープロファイルから$MYDIRを読み取る際に問題が発生します。

#su - appadmin
#ls $MYDIR
4

2 に答える 2

1

実行するコマンドを引用する必要があります。

現在、シェルは$MYDIR呼び出し元の環境からの値に置き換えられています。また-c、実行される次の引数のみを渡します。つまりls、-なしで、$MYDIRリモートコマンド全体を引用符で囲む必要があります。

su - app${username} -c 'ls $MYDIR'
于 2009-11-08T22:43:44.983 に答える
0

に変更$MYDIR${MYDIR:?}ます。MYDIR が設定されていない場合、これによりエラーが発生します。プロファイルで変数をエクスポートしていない可能性があります。そのため、コマンド ラインでは機能しますが、スクリプトでは機能しません。

于 2009-11-08T22:53:13.440 に答える