LoginSignup
2
2

More than 5 years have passed since last update.

shやbashのwhile文内の変数スコープはwhile内だけなのにzshは違った話

Last updated at Posted at 2015-04-03

whileの中で定義した変数は、whileの外ではアクセスできません。でもzshはできるんです。
なので内容によってはハマるかもだよ、という話です。

# こんなファイルがあるとします
$ cat file
aaaaa
bbbbb
ccccc
# ファイルを1行ずつ読み込んでechoするwhile文
cat file | while read line
do
    BUF=${line}
    echo ${BUF}
done

echo "-----"

echo ${BUF}  # ここに注目

/bin/sh

最後の行、 echo ${BUF} の結果がからっぽです。というかそんな変数無いよ、という状態ですね。

実行結果
aaaaa
bbbbb
ccccc
-----
        # BUFがからっぽ!

/bin/bash

/bin/sh におなじく。

実行結果
aaaaa
bbbbb
ccccc
-----
        # BUFがからっぽ!

/bin/zsh

この人だけ違います。

実行結果
aaaaa
bbbbb
ccccc
-----
ccccc   # 最後の状態のBUFが表示される
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2