• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Kシェルが動作しない。)

Kシェルが動作しない

このQ&Aのポイント
  • Kシェルが他のシェルから呼び出すと動作しない
  • 子シェルがメインシェルのwhile文の中に入れると無限ループする
  • 質問者はKシェルの動作が分からないため、助言を求めている

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

  • ベストアンサー
  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.2

子シェルのreadが親の < /xxx/zzz.txtを読んでいるからです。 親のwhile read line のwhileの制御の方法と子シェルのreadがぶつかってます。

zuraoyaji
質問者

お礼

早速の回答有難うございます。 以下のようにすれば回避できました。 メインシェルにてloopさせていたzzz.txtの値を配列array[${count}]に入れる。 次にその配列を使用して子シェルを動かす。 #!/bin/ksh count=0 while read line do array[${count}]=${line} let count=count+1 done < /xxx/zzz.txt i=0 while (( ${i} < ${count} )) do echo ${array[$i]} let i=${i}+1 ksh /xxx/子シェル.ksh done ご教授いただきまして有難うございました。 大変助かりました。 以上

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.1

何をしたいのかよくわかりませんが、zzz.txt の中身は?ちゃんとYesとかNoだけの行が入ってますか? zzz.txt をメインシェルと子シェルが順番に読むので、ずれたりすると予想外の結果になるかも。 もしかして、メインシェルは、 while read line do $line を使った何らかの処理 ここでキーボードからYesとかNoとか入れてそれにより処理を変えたい done < /xxx/zzz.txt ということをしたいのですか?それなら全然駄目です。 もしそうなら、Yesが入ったらどうしたいのか、Noが入ったらどうしたいのか、どちらでもない物が入ったらどうしたいのか書いてみてください。

関連するQ&A

専門家に質問してみよう