今日私は含まれている小さなスクリプトを書きました
grep -q ^local0 /etc/syslog.conf
レビュー中、同僚は、Bourneシェルの「パイプ」を意味する^local0
ため、引用することを提案し^
ました。この主張に驚いて、私はこれに言及した参考文献を追跡しようとしました。インターネット上でこれが問題だと示唆するものはありませんでした。
ただし、bsh
AIX 7の(Bourneシェルであると主張する)の実装には、実際に次の動作があることがわかります。
> bsh
$ ls ^ wc
23 23 183
$ ls | wc
23 23 183
私が試した他の「Bourneシェル」実装は、この方法で動作し^
ませんでした(つまり、シェルメタキャラクターとはみなされません)。sh
CentOS(実際にはbash)とsh
FreeBSD(bashではない)で試しました。他に試すシステムはあまりありません。
この動作は予想されますか?どのシェル^
がパイプメタキャラクターと見なされますか?
[ x"$foo" = x"bar" ]
。
bsh
ボーンシェルではありません。この名前は、AIX上のBourne Shellのみで悪用されます。bsh
1984年にUNOS(最初のUNIXクローン)のH.Berhold AGで紹介されたシェルです。AIXは、1984年に存在しなかったことを注意
^
がzshの否定文字であり、正規表現の空間でもあることを知っています。別のコメントとして、シェル間での移植性のために、grep式で単一引用符を使用することをお勧めします。