2020-01-14 :-|
_ 労
ストレージ労。一区切りしそうな感じ。
_ [bash][サブシェル]bash でのサブシェルからの return を拾う
サブシェル内で return だけしてもサブシェルの後ろに書かれたコマンドが実行されてしまうので、「|| return」で拾ってやらないといけない。あるいは if [ $? -ne 0 ] でテストする。やってることはどちらも同じ。
#!/bin/bash
hogehoge()
{
(
cd /usr
echo $PWD
if [ $1 -ne 0 ]; then
return 1
else
return 0
fi
) || return 1
echo $PWD
echo hogehoge
}
echo $PWD
hogehoge $*
if [ $? -ne 0 ]; then
echo NG
else
echo OK
fi
実行
% /bin/bash ret2.sh 1 /home/miwa/work/lang/sh /usr NG
% /bin/bash ret2.sh 0 /home/miwa/work/lang/sh /usr /home/miwa/work/lang/sh サブシェルの後に書かれた行に到達してる hogehoge OK
[ツッコミを入れる]



