FreeBSD 二重角括弧

FreeBSD 二重角括弧

私はこのコードを持っています:

[[ "$1" =~ [/\\]$ ]]

Linuxではうまく動作しますが、FreeBSDでテストするとエラーが発生します。./projekt2.sh: [[: not found両方のシステムで動作する代替手段はありますか?ありがとう

BASHバージョン:4.3.30(1) - リリース

ベストアンサー1

[[屈辱だ。 /bin/shBourne Again シェルは保証されません。

Linuxオペレーティングシステムでも、Debian Almquistシェルまたはポリシーに準拠した一般的なシェルです。 BSDではBourne Againシェルではありません。BSDでは、Bourne Againシェルはオペレーティングシステム自体にオプションの追加機能です。。内部にFreeBSDポートコレクション。 (「ポート」は、そのプログラムに対して外部管理されたソースストアからFreeBSDに別のプログラム(FreeBSDの一部ではない)を構築する便利な方法です。)

/bin/shBSDのコンテンツは通常、Bourneの初期の書き換えの1つです。 FreeBSDでは、Debian Linuxと同様にAlmquistシェルです。 (OpenBSDでは、POSIXモードで実行されるKornシェルです。)

バシズムには簡単なルールがあります。

スクリプトでbashismを使用している場合は、/bin/bashスクリプトインタプリタとして明示的に設定してください。代わりにスクリプトソルバーとして使用する場合は、/bin/shPOSIX準拠のシェル言語を使用してください。ホロ

=~これはbashismであり、このコマンドのPOSIX互換構文の一部ではありませんtest。しかし、ここで正規表現はやや過剰です。明らかに、あなたが本当に欲しいのは、最後の文字をチェックするだけです。

Thorsten Glaserが2012年にこの種のことについて提案した内容は次のとおりです。

ケース $1
    */|*\\)
        スイング;;
    *)
        スイング;;
イサク

追加読書

おすすめ記事