この行を置き換えるシェルスクリプトを作成します。
exec "$progdir/$program" ${1+"$@"}
そして:
exec qemu-arm -L /mnt/c/git/build/linux_arm7/build_arm7/sysroot "$progdir/$program" ${1+"$@"}
ファイルから。
/mnt/c/git/build/linux_arm7/build_arm7
という名前の変数にありますBUILD_DIRECTORY
。私が何をしようとしても(引用符、他の区切り文字)、常に置換の代わりに変数で終わります。たとえば、私はこれを試しました:
#!/bin/bash
sed_test()
{
sed -i 's|exec "\$progdir\/\$program" \${1+"\$@"}|exec qemu-arm -L ${BUILD_DIRECTORY}\/sysroot "\$progdir\/\$program" \${1+"\$@"}|g' ${BUILD_DIRECTORY}/file
}
ファイルにこれを得ました:
exec qemu-arm -L ${BUILD_DIRECTORY}/sysroot "$progdir/$program" ${1+"$@"}
これを正しく行う方法は?
ベストアンサー1
${BUILD_DIRECTORY}
参照により変数の拡張が防止されるg
最終不要- あなたはとても逃げました。
BUILD_DIRECTORY 変数にスペースがない場合は、次のようにします。
sed -i 's|exec "$progdir/$program" ${1+"$@"}|exec qemu-arm -L '${BUILD_DIRECTORY}'/sysroot "$progdir/$program" ${1+"$@"}|' ${BUILD_DIRECTORY}/file
周囲の一重引用符に注意してください。${BUILD_DIRECTORY}
BUILD_DIRECTORYにスペースがある場合(たとえばlinux arm7
)、リレー文字列を使用します(コマンド分割)。
sed -e 's|exec "$progdir/$program" ${1+"$@"}|exec qemu-arm -L BUILD_DIRECTORY/sysroot "$progdir/$program" ${1+"$@"}|'
-e "s|BUILD_DIRECTORY|${BUILD_DIRECTORY}|"
"${BUILD_DIRECTORY}/file"
生産する
exec qemu-arm -L /mnt/c/git/build/linux arm7/build_arm7/sysroot "$progdir/$program" ${1+"$@"}