私はsedコマンドが初めてです。いくつかのソース コードのビルド スクリプトを読んでいたところ、この for ループが見つかりました。
for x in '*.la'
do
sed -i -e 's|^\(libdir=.\).*\(/opt/toolchains\)|\1\2|' x
done
この for ループが行っている機能を理解できません。誰でも助けることができます。
私はsedコマンドが初めてです。いくつかのソース コードのビルド スクリプトを読んでいたところ、この for ループが見つかりました。
for x in '*.la'
do
sed -i -e 's|^\(libdir=.\).*\(/opt/toolchains\)|\1\2|' x
done
この for ループが行っている機能を理解できません。誰でも助けることができます。
現在のディレクトリ内の「.la」で終わる一連のファイルを反復処理し、見つかったファイルごとに、sed を使用して内容を編集し、次の形式の行を変換します。
libdir=X[zero-or-more-chars]/opt/toolchains
(X は任意の文字) を次の形式の行に変換します。
libdir=X/opt/toolchains.
つまり、これらの行の [zero-or-more-chars] 部分を削除しています。
実際、sed コマンドは x ではなく $x を参照すると予想されるため、これはバグがあるように見えます。コピー/貼り付けのステップで何らかの形で $ を失った気がします (または、単にバグである可能性があります)。