2012-04-25 19 views
1

は、私はオープンソースプロジェクトでのlibtoolと呼ばれるファイルで見つかったいくつかのコードは、(それがこのシステム上でコンパイルしていない)である:このbashコードは何をしていますか?ここ

case $arg in 
    -*=*) 
    optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; 
    *) optarg= ;; 
    esac 

私はcase文を取得し、私は最初のについてはよく分かりませんoptarg=...行。何を得ようとしているのですか?このテストケースについて、聞かせて:OS Xでこれを実行する

CC="arm-elf-gcc" 
arg="--tag=CC" 
Xsed="/usr/bin/sed -e 1s/^X//" 

が私を取得します。

../libtool: line 828: X--tag=CC: command not found 

私は「アームエルフ - gccのを」変数OPTARGに代入しようとしているかもしれないと思うが、よく分かりません。ソフトウェア全体がUbuntuで正しくコンパイルされますが、libtoolファイルは非常に異なって見えます。 arg="--tag=CC"が値CC

それは--tag=を削除するには、正規表現を使用することによってこれを行うに分離しようとしているされて、あなた例えば

+3

'$ echo'の定義がありません。ほとんどのGNUソフトウェアでは、これはエスケープシーケンスを展開しない 'echo'実装を検索した結果です。 – geekosaur

+0

@geekosaurデバッグ中、$ echoは空であることがわかります。どのようなアイデアを手にするか(新しいエコーを得る?) – jtpereyda

+0

これを 'echo'に設定することができます。また、別のシステム(Linux対OS Xなど)で生成された 'libtool'を使用している場合は、ローカルシステムで動作する' libtool'を生成するために 'libtoolize'を実行する必要があります。 – geekosaur

答えて

1

。 sedコマンドs/A/B/は、Aに一致するものをBに置き換えます。Aは、文字、数字、下線、およびダッシュの後に等号があり、Bが空である任意の組み合わせを検索する正規表現です。したがって、--tag=CCと表示された場合、正規表現--tagと一致するものは何もないので、値は単にCCとなります。

1

これは普通のgetoptsは処理で

`--option=value` 

形式のコマンドライン引数を処理しているあなたは-o valueを指定した場合、変数optargvalueに設定されています。このコードは、上記の長い形式(getoptsの1つの大きなオプション引数のように見える)を指定すると同じことが起こるようにします。

関連する問題