bash シェルで「set」コマンドを実行すると、変数に値が含まれていることがわかります。ただし、bash スクリプトで「set」コマンドを実行すると、変数が存在しません。なんで?どうすればこれを実現できますか?
AxOS(7iq1) root:/mnt/ax/scratch/roshi# set
--snip--
SERIAL_NUMBER=7iq1
--snip--
AxOS(7iq1) root:/mnt/ax/scratch/roshi#
私のシェルスクリプト tmp.sh には含まれています
#!/bin/bash
svcid=`set | grep ^SERIAL_NUMBER | awk '{ split($1,a,"=");print a[2] }'`
echo ${svcid}
次のようにスクリプトを実行すると、出力が得られません
AxOS(7iq1) root:/mnt/ax/scratch/roshi# ./tmp.sh
AxOS(7iq1) root:/mnt/ax/scratch/roshi#
スクリプトを次のように実行すると(最初に Doon が提案)
AxOS(7iq1) root:/mnt/ax/scratch/roshi# . ./tmp.sh
7iq1
AxOS(7iq1) root:/mnt/ax/scratch/roshi#