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