このスレッドは未解決です(解決したらこちらで解決済にしてください)
<<戻る

LPIC 102 このメッセージに返信する
日時: 2016/07/10(Sun) 15:08
名前: sarusaru
URL:
サーバー構築から 離れすぎていますが 質問させてください。
将来的にlinuxサーバー構築を検討しているためにLPIC102の勉強をしています。
以下の問題の 理解ができず悩んでおります
以下のコマンドシーケンスが生成する出力は、次のうちどれですか? 
echo ’1 2 3 4 5 6’ | while read a b c ; do echo result: $c $b $ a; done
result: 3 4 5 6 2 1
result: 1 2 3 4 5 6
result: 6 5 1 2 3 4
result: 3
result: 3 2 1

答え 
result: 3 4 5 6 2 1

初心者すぎて スレ違いかもしれませんがよろしくお願いします


while read echoコマンドの 単独の意味はわかっているつもりなのですが・・・

このコマンドシーケンスの内部でどのように処理されて この答えが導かれているのでしょうか?
自分の中では
while read a b c で
a=1
b=2
C=3
とされ
echo result: $c $b $ a で
3 2 1 と表示
次に
再度 while read a b c で
a=4
b=5
C=6
とされ
echo result: $c $b $ a で
6 5 4 と表示
結果として 3 2 1 6 5 4
と表示されると思うのですが・・・
記事編集 編集
Re: LPIC 102 このメッセージに返信する
日時: 2016/07/10(Sun) 16:56
名前: stranger
URL: http://ja.528p.com/
while read a b c で
a=1
b=2
c=3 4 5 6
と変数に取り込まれるので
echo result: $c $b $a

result: 3 4 5 6 2 1
ではないですか

echo '1 2 3 4 5 6' | while read a b c d e f; do echo result: $c $b $a; done
変数を6っつ用意すれば
result: 3 2 1
になります

蛇足
コマンドを正確に書きましょう
’ が2バイト文字になっていたり
$a が $ a になってたりします
そのまま実行すると
result: 3 4 5 6’ 2 $ a
になります

c=3 4 5 6’(3 4 5 6 と2バイトの’)
b=2
$ a はそのまま
記事編集 編集
Re: LPIC 102 このメッセージに返信する
日時: 2016/07/10(Sun) 18:44
名前: sarusaru
URL:
早速の返信有り難うございます!!
理解できました!
http://qiita.com/mattintosh4/items/a98cfb5a62ee95c8a137
にも有りましたが 
変数が少ない場合は最後の変数にまとめられ、逆に変数が多い場合は空になるんですね?

readは必ず 空白を区切りにした文字が一つづつしか入らないと勘違いしていました。

因みにコマンドの誤記表現ですが・・練習問題のホームページ(techhub)でも誤記表記でした・・
いずれにせよ気をつけます。

ありがとうございました。
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -