編集部からのお知らせ
「半導体動向」記事まとめ
「リスキリング」に関する記事まとめ

シェルスクリプト:while文のリダイレクトはサブシェルで実行されますか

OKWave

2007-10-02 09:00

シェルスクリプト:while文のリダイレクトはサブシェルで実行されますか

日頃Linuxを使用している者です。手元にSolaris環境がなく検証できないためSolaris使いの方にお伺いさせてください。

お聞かせいただきたいことは次の一点です。
Q. Solaris8,9,10 のBourneShellは従来どおり、while文でリダイレクトを使ったときは、サブシェルでまわりますか?

上記質問に至った簡単な経緯を申し上げます。
実は、Linuxの/bin/ash(BourneShell相当)スクリプトで while文でリダイレクトしたところ、ループ内の変数がwhileの外でも参照できました。本来BourneShellの場合、当ケースでのループはサブシェルで回るはずですよね。
最近のGNU BASHを始め、ASHもfor,whileのりダイレクトを使ったループもカレントシェルで動作するということでしょうか? そこで、SolarisのSHはどうなのかと思った次第です。以上宜しくお願いします。

p.s.
HP-UX, AIXのSHについても情報があればありがたいです。
参考までに、Linux上の実例を記します。

■test.ash
#!/bin/ash

n=0
while read line
do
i=`expr $i + 1`
echo "$i: $line"
done < $0
echo "total line= $i"

■実験してみる
> ./test.ash
1: #!/bin/ash
2:
3: i=0
4: while read line
5: do
6: i=`expr $i + 1`
7: echo "$i: $line"
8: done < $0
9: echo "total line= $i"
total line= 9 ← しっかりインクリメントされた変数見れてるし。最近の仕様?

良回答

Solarisの環境は無いのでわかりませんが、
http://www.nurs.or.jp/~asada/FAQ/UNIX/section3.8.html
Posix準拠のshだとカレントシェルでの実行のようです。

ZDNet Japan 記事を毎朝メールでまとめ読み(登録無料)

特集

CIO

モバイル

セキュリティ

スペシャル

ホワイトペーパー

新着

ランキング

  1. クラウド基盤

    あまり知られていない“クラウド導入の現情”─業界人が本音で語る!

  2. セキュリティ

    サイバーセキュリティ施策の鍵を握る制御システム(OT)とITの統合、そのポイントと対策を解説

  3. 運用管理

    ダッシュボードは時代遅れ、最新クラウド分析で誰にでもパーソナライズされたインサイトを提供する方法

  4. 開発

    日本のコンテナ/Kubernetes環境の本番活用が遅れる理由を2つの調査結果分析から考察

  5. 経営

    いまさら聞けないクラウドインフラの基本ー初級技術書の定番 IaaS for dummies公開中

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNet Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]