1

私はsedコマンドが初めてです。いくつかのソース コードのビルド スクリプトを読んでいたところ、この for ループが見つかりました。

for x in '*.la'    
do    
sed -i -e 's|^\(libdir=.\).*\(/opt/toolchains\)|\1\2|' x    
done

この for ループが行っている機能を理解できません。誰でも助けることができます。

4

1 に答える 1

1

現在のディレクトリ内の「.la」で終わる一連のファイルを反復処理し、見つかったファイルごとに、sed を使用して内容を編集し、次の形式の行を変換します。

libdir=X[zero-or-more-chars]/opt/toolchains 

(X は任意の文字) を次の形式の行に変換します。

libdir=X/opt/toolchains. 

つまり、これらの行の [zero-or-more-chars] 部分を削除しています。

実際、sed コマンドは x ではなく $x を参照すると予想されるため、これはバグがあるように見えます。コピー/貼り付けのステップで何らかの形で $ を失った気がします (または、単にバグである可能性があります)。

于 2012-12-05T07:20:24.797 に答える