19/08/10 23:19:50.86 L+B8OP2P.net
お約束
・特記なき場合、POSIX 準拠の sh 可換シェルが既定です。(Bourne Shellは既にレガシーです)
つまりシバンは #!/bin/sh です。
特定のシェル(bash, zsh, (m|pd)ksh, (d)ash, yash, posh, fish, (t)csh など)の専用機能に依存する場合は明示しましょう。
macOS (10.14以前), GNU/Linux ユーザー(Debian, Ubuntu 系以外) は /bin/sh の実体が bash なので*特に*注意
自覚なき bashism---シバンが #!/bin/sh なのに bash に依存する構文を使っていませんか?
ただし Debian, Ubuntu などでは /bin/sh の実体は POSIX sh 互換の dash ですのであまり気にしないでも大丈夫です。
FreeBSD ユーザーは /bin/sh の実体が ash なので注意。
Solaris, OpenBSD ユーザーは /bin/sh の実体が ksh なので注意。
macOS 10.15以降のユーザーは/bin/sh の実体が zsh なので注意。
android ユーザーは /bin/sh の実体が mksh なので注意。
csh/tcshでのシェルスクリプトは*まったく推奨しません*。
(参考URL: URLリンク(www.speech-lab.org))
・POSIX に準拠しましょう
有用なリンクは URLリンク(en.wikipedia.org) にまとめられています。
最新の仕様はこちらへ: URLリンク(pubs.opengroup.org)
(左上の「Shell & Utilities」から各コマンドやファイルの仕様を参照することができます)
・Version 7 UNIX の sh(1) に一番近いのは OpenSolaris 由来の Heirloom sh、次点で Debian などに搭載されている Dash shell
Heirloom sh: URLリンク(heirloom.sourceforge.net)
Dash shell: URLリンク(gondor.apana.org.au)
・UNIX にはシェルスクリプトに便利な小さなコマンドがいろいろあります
Man ページや各種リンク(URLリンク(pubs.opengroup.org)など)を見ましょう。
apropos(1) ないしは man(1) の-kオプションでそれらしい単語による簡単な検索もできます。
・ワイルドカードは正規表現ではありません。
正規表現の話題はスレ違い(正規表現スレへ)
・シェルスクリプトのことをシェルってゆうな