2011-07-05 9 views
3

gdbを実行してemacsを起動したい。私はコマンドライン引数のすべてを同時に入力したいと思っています。この投稿: Start emacs-gdb from command line?は、すでに問題の95%を解決していますが、私は問題に後悔しています。私は本当に私はこのサイト上とGoogleで検索してきた、と私は時間のカップルのために遊んが、私はできない、スペースを持つ引数に渡すことができるようにコマンドラインパート2からemacs-gdbを起動する

edbg path/to/myprog --firstarg "something with spaces" --secondarg 1 

ALA何かが必要これを理解しているようです。

アイデア?

edbg() { emacs --eval "(gdb \"gdb --annotate=3 $*\")";} 

をし、引数にスペースが新しいワード境界に再解析を受けるので、それは動作しません:

答えて

2

だから、私はそれを理解しますが、このバッシュ関数が定義されています。まあ、これは、Bashスクリプトによくある問題です。特殊な変数$ @は、二重引用符で囲まれた文字列の中に関数の引数を別々に展開します。これは私たちに半分の道を与えます。残りはちょうど戻ってそれらの前後に引用符を入れている:これも引用符を必要とするタブや改行を含んで引数の前後に引用符を入れていないということ

edbg() { 
    arglist=""; 
    for a in "[email protected]"; do 
    if [[ $a == ${a/ /} ]]; then 
     arglist="$arglist $a"; 
    else 
     arglist="$arglist \\\"$a\\\""; 
    fi 
    done; 
    emacs --eval "(gdb \"gdb --annotate $arglist\")" 
} 

注意を。 $ IFSは異なる場合があります。

+0

ありがとうございましたdb48x。これは私が行く必要のある場所に私を連れて行きました。他の人を助けるために、上記の行を次の行でパッチすれば、その例は完全に期待どおりに動作するはずです:emacs --eval "(gdb \" gdb -annotate = 3; -cd 'pwd' --args $ arglist \ ")" – graphicsMan

関連する問題