みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

シェルの変数セットについて

どなたか教えてください。
以下のようなUNIXのシェルを作ってみたのですが変数がうまくセットされません。
これは仕様なんでしょうか???
シェルはkshでシェルの中でsuしているユーザはcshです。
例:
==test.sh==
#!/bin/ksh
A1="test test"
su - user1 <<EOF
echo "A1 :" $A1
set A2 =(test test)
echo "A2 : " $A2
EOF
exit
==実行結果==
%./test
A1 : test test
A2 :
%

投稿日時 - 2010-12-09 14:47:41

QNo.6373169

すぐに回答ほしいです

質問者が選んだベストアンサー

> echo "A2 : " $A2

この$A2が kshで展開された状態で suに渡されているのが原因です。
\$A2として$をそのままsuに渡すようにしましょう。

ついでに言えば、
> echo "A1 :" $A1

> A1 : test test
となるのも、kshで展開された

echo "A1 :" test test

がsuに渡されたからであって、cshで $A1を展開しているわけではありません。

投稿日時 - 2010-12-09 18:25:26

お礼

ありがとうございます、大変参考になりました。

投稿日時 - 2010-12-09 19:17:16

ANo.3

このQ&Aは役に立ちましたか?

11人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

$ をエスケープすれば?
echo \$A2

投稿日時 - 2010-12-09 17:33:26

お礼

回答ありがとうございます。

 助かりました

投稿日時 - 2010-12-09 19:18:01

ANo.1

どうなることを期待している?

投稿日時 - 2010-12-09 16:12:16

補足

理想は質問で書いたシェルで言うと
%test
A1: test test
A2: test test
%
となるのが理想です。

投稿日時 - 2010-12-09 16:16:50

あなたにオススメの質問