
私は、書き直し/再編成の一環として bash スクリプトをより適切に整理しようとしていますが、次のような状況での「ベスト プラクティス」が何であるかを考えています。
ymd=`echo "${NOEXT}" | egrep -o -m 1 "\-20[0-9]{2}\-[0-9]{2}\-[0-9]{2}\-"`
または
ymd=`egrep -o -m 1 "\-20[0-9]{2}\-[0-9]{2}\-[0-9]{2}\-" <<< ${NOEXT}`
最初のバージョンでは、パイプによりサブシェルが作成されると思います。2 番目のバージョンでは here 文字列が作成されるのでしょうか? 作成されないと思いますが、私の仮定を検証したいと思います。
答え1
後者はそうではありませんが、(アイドル システムで) PID の増加を確認することで (大まかに) 確認できます。前者を実行すると 2 増加しますが、後者を実行すると 1 しか増加しません。
しかし、それはバシズムおそらく、ここのドキュメントに置き換える必要があるでしょう:
ymd=`egrep -o -m 1 "\-20[0-9]{2}\-[0-9]{2}\-[0-9]{2}\-" <<EOF
${NOEXT}
EOF`
答え2
を使用できbash
、POSIX 互換性を必要としない場合は、 への外部呼び出しを使用せずに正規表現の一致を実行できますegrep
。
[[ $NOEXT =~ -20[0-9]{2}-[0-9]{2}-[0-9]{2}- ]]
ymd=${BASH_REMATCH[0]}