0

次のスクリプトを機能させようとしていますが、いくつか問題があります。

g++ -g -c $1
DWARF=echo $1 | sed -e `s/(^.+)\.cpp$/\1/`

そして私は得ています-

./dcompile: line 3: test3.cpp: command not found
./dcompile: command substitution: line 3: syntax error near unexpected token `^.+'
./dcompile: command substitution: line 3: `s/(^.+)\.cpp$/\1/'
sed: option requires an argument -- 'e'

そして、sed の使用に関する一連の情報。私がやりたいことは、cpp ファイルを渡し、.cpp なしでファイル名を抽出して変数 DWARF に入れることです。また、後で変数 DWARF を使用して次のことを行いたいと思います-

readelf --debug-dump=info $DWARF+".o" > $DWARF+".txt"

しかし、実際にオンザフライ文字列の連結を行う方法がわからないので、両方の問題を解決してください。

4

3 に答える 3

2

実際にコマンドを実行する必要があります:

DWARF=$(echo $1 | sed -e 's/(^.+)\.cpp$/\1/')

元のステートメントのため、エラーメッセージはシェルエラーです

DWARF=echo $1 | sed -e `s/(^.+)\.cpp$/\1/`

実際にはこのように解析されます

run s/(^.+)\.cpp$/\1/
set DWARF=echo
run the command $1 | ...

したがって、test3.cpp: command not found引数を指定して実行していると仮定すると、test3.cpp文字通りそのファイルを実行しようとしています

また、バッククォートではなく、sed スクリプトを一重引用符で囲む必要があります。

于 2013-06-25T19:12:20.690 に答える