クッシュ"<

クッシュ

最も単純な形式では、ユーザーを変更するために.hereスクリプトを使用して、このスクリプトが期待どおりに機能しない理由が混乱していますsu - user <<EOF

su - db2prd<<EOF
PARMDATE=1111111
echo parmdate
echo $PARMDATE
EOF

出力を生成します。

parmdate

su/EOF 部分を取り外します。

PARMDATE=1111111
echo parmdate
echo $PARMDATE

生産する:

parmdate
1111111

環境が設定されていないと仮定すると、ksh変数の割り当てが機能しない理由とその動作方法がわかりません。検索できるすべてを試しました。このセクションの変数割り当てが壊れているようですsu - <<EOF

これは、いくつかのメンテナンス活動のためにユーザーを切り替える大規模スクリプトの例にすぎません。

ベストアンサー1

変数はここのドキュメント(<<...)で説明されているので、評価したくない変数はエスケープする必要があります。

su - db2prd<<EOF
PARMDATE=1111111
echo parmdate
echo \$PARMDATE
EOF

あるいは、より良い方法は、区切り文字(ここでEOF)を引用して、シェルがこの文書で拡張を実行しないように指示することです。

su - db2prd<<'EOF'
PARMDATE=1111111
echo parmdate
echo $PARMDATE
EOF

おすすめ記事