シェルスクリプト間の変数渡し的な

aaa.sh
#!/bin/sh

AAA=123
sh ./bbb.sh
bbb.sh
#!/bin/sh

set -u
echo $AAA

を実行すると

$ sh aaa.sh
./bbb.sh: line 5: AAA: unbound variable

になってしまう…… exportもしたくないしなーと思って先頭で変数を宣言してみたら。

$ AAA= sh aaa.sh
123
$ echo $AAA

$

通った!しかも変数は残ってない!
あんまりよくわかってないけど、その行(?)だけの若干スコープの広い変数の扱いなのかな?


ちなみに。

$ AAA= ; sh aaa.sh
./bbb.sh: line 5: AAA: unbound variable

まあそうなりますよね。