私もできることを知っています
$ [ -w /home/durrantm ] && echo "writable"
writable
または
$ test -w /home/durrantm && echo "writable"
writable
または
$ [[ -w /home/durrantm ]] && echo "writable"
writable
私は3番目の構文を使用したいと思います。すべての側面で、すべての否定的なケースと極端なケースで同じですか? UbuntuのbashとOS Xや古い/新しいbashバージョン(4.0以前/以降など)のような移植性に違いはありますか?すべて同じ方法で式を拡張しますか?
ベストアンサー1
はい、違いがあります。最も移植性に優れたのはtest
またはです[ ]
。これらはすべてPOSIXtest
仕様。
構造if ... fi
はまたPOSIXで定義そして完全に移植可能でなければなりません。
この[[ ]]
機能はksh
一部のバージョンbash
(すべて現代的です)、他のシェルzsh
、多分他のシェルにあるかもしれませんが、さまざまな他の単純なシェルにはsh
ありません。dash
したがって、スクリプトを移植可能にするには、またはを使用します[ ]
。test
if ... fi