2

Solaris では、「行頭に一致」式を一重引用符で囲む必要があるようです。

 > sh
 $ echo offset 0.000000 2>&1 | grep ^offset | tail -1
 offset: not found
 $ Usage:        grep [-c|-l|-q] [-bhinsvwx] pattern_list [file ...]
         grep [-c|-l|-q] [-bhinsvwx] [-e pattern_list]... [-f pattern_file]... [file...]
         grep -E [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
         grep -E [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]
         grep -F [-c|-l|-q] [-bhinsvx] pattern_list [file ...]
         grep -F [-c|-l|-q] [-bhinsvx] [-e pattern_list]... [-f pattern_file]... [file...]

正規表現を一重引用符で囲むことで、これを簡単に修正できます。

 > sh
 $ echo offset 0.000000 2>&1 | grep '^offset'| tail -1
 offset 0.000000

これは、bash を使用している自分のコマンド ラインには表示されませんが、system() を使用する perl スクリプトなどのスクリプトには表示されます。

そのデフォルトの Solaris シェルは Bourne シェルですか? デフォルトの Solaris シェルのシェル言語で、^ (キャレット) にはどのような追加の意味がありますか?

4

1 に答える 1

5

Bourneシェルの「^」は下位互換性のあるバージョン/「|」と同等のものとして許可されたと思います char。

そして、あなたの見ることはその解釈を支持するように思われるというメッセージ。

offset確認するために、 「オフセットする」を出力するだけのテストスクリプトを作成して確認します。

(この古いSunOS3コーダーで失われたものとの下位互換性/dev/null;-))

IHTH。

于 2012-10-29T16:39:02.560 に答える