私はこのコードを持っています:
[[ "$1" =~ [/\\]$ ]]
Linuxではうまく動作しますが、FreeBSDでテストするとエラーが発生します。./projekt2.sh: [[: not found
両方のシステムで動作する代替手段はありますか?ありがとう
BASHバージョン:4.3.30(1) - リリース
ベストアンサー1
[[
屈辱だ。 /bin/sh
Bourne Again シェルは保証されません。
Linuxオペレーティングシステムでも、Debian Almquistシェルまたはポリシーに準拠した一般的なシェルです。 BSDではBourne Againシェルではありません。BSDでは、Bourne Againシェルはオペレーティングシステム自体にオプションの追加機能です。。内部にFreeBSDポートコレクション。 (「ポート」は、そのプログラムに対して外部管理されたソースストアからFreeBSDに別のプログラム(FreeBSDの一部ではない)を構築する便利な方法です。)
/bin/sh
BSDのコンテンツは通常、Bourneの初期の書き換えの1つです。 FreeBSDでは、Debian Linuxと同様にAlmquistシェルです。 (OpenBSDでは、POSIXモードで実行されるKornシェルです。)
バシズムには簡単なルールがあります。
スクリプトでbashismを使用している場合は、/bin/bash
スクリプトインタプリタとして明示的に設定してください。代わりにスクリプトソルバーとして使用する場合は、/bin/sh
POSIX準拠のシェル言語を使用してください。ホロ。
=~
これはbashismであり、このコマンドのPOSIX互換構文の一部ではありませんtest
。しかし、ここで正規表現はやや過剰です。明らかに、あなたが本当に欲しいのは、最後の文字をチェックするだけです。
Thorsten Glaserが2012年にこの種のことについて提案した内容は次のとおりです。
ケース $1 */|*\\) スイング;; *) スイング;; イサク
追加読書
- 「ユーティリティ:テスト」。 シェルコマンド言語。単一のUNIX仕様。問題6. IEEE 1003.1。 2013. グループを開きます。
- https://superuser.com/a/726762/38062
- https://superuser.com/a/696310/38062
sh
。 2014年1月26日。 FreeBSD 汎用コマンドマニュアル。- ダッシュ
/bin/sh
。 Ubuntu Wiki。 - ダッシュ
/bin/sh
。 Debian Wiki。 - バシズム。グレッグのウィキ。
- シェルコマンド言語。 IEEE規格1003.1。問題7.グループを開きます。