私たちは、ほとんどすべてのUnix互換システムで実行されるGNUmakefileを作成する方法を見つけようとしています。私たちは使用していますが、egrep
MinGWでは失敗します。grep -E
だから切り替えるボスクしかし、テストの結果、Solaris 11では失敗することがわかりました。
makefileの一般的な使い方は次のとおりです。
GREP ?= grep
...
IS_X86 := $(shell uname -m | $(GREP) -v "x86_64" | $(GREP) -i -c -E "i.86|x86|i86")
IS_X64 := $(shell uname -m | $(GREP) -i -c -E "(_64|d64)")
結果:
grep: illegal option -- E
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
grep: illegal option -- E
Usage: grep [-c|-l|-q] -bhinsvw pattern file . . .
...
-E
私はそれを見ることができず、Posixでは-F
オプションです(おそらく逃した可能性があります)。私が見つけたSolarisとPOSIXの違いスタックオーバーフローにありますが、次のように指定されています。「SolarisにはPOSIXインタフェースの完全なセットがあります...」。
Solarisはなぜgrep
消費できないのです-E
か? Solarisに切り替える以外に、Solarisで正規表現サポートを使用する他の方法はありますかegrep
?
環境を汚染していないことを確認するために、Solaris 11.3システムに新しいテストアカウントを設定しました。
このアカウントが追加されました:
# useradd -d /export/home/test -m -s /bin/ksh -c "Testing Accoung" test
80 blocks
PATH
ログイン後確認:
test@solaris:~$ echo $PATH
/usr/bin:/usr/sbin
ベストアンサー1
~からOracle Solaris ドキュメント (XPG)
便利
POSIX.2、POSIX.2a、XPG4、SUS、またはSUSv2で要求された動作が既存のSolarisユーティリティの動作と競合する場合、ユーティリティの元のSolarisバージョンは変更されず、新しい標準互換バージョンとして提供されます
/usr/xpg4/bin
。 POSIX.2、POSIX.2a、XPG4、SUS、またはSUSv2機能を利用するアプリケーションの場合は、これらの仕様で指定されているユーティリティの別のディレクトリを見つける前にPATH
(sh
またはksh
)またはpath
()環境変数を設定する必要があります。 、、、、そして。csh
/usr/xpg4/bin
/bin
/usr/bin
/usr/ucb
/usr/ccs/bin
拡張正規表現を使用する必要がある場合は、事前に設定して/usr/xpg4/bin
使用PATH
してくださいgrep -E
。