変数を設定しました。TEMPP='-I ../dir1 -I ../dir2'
だから私は走る
gcc -M $TEMPP somefile.c
含まれているファイルの検索リストに../dir1
含まれていないように見え、../dir2
変数の先頭にスペースがある場合(例:
TEMPP=' -I ../dir1 -I ../dir2'
エラーが報告されます。
gcc: -I ../common1 -I ../encrypt: No such file or directory
だから変数をファイルとして扱うようです。
おそらく、この問題を避けるためにディレクトリを分離することができます。ただし、含まれているディレクトリはdirs
他のコマンドによって生成され、数値は一定ではありません。
それでは、コマンドの変数をリテラルとして処理し、整数文字列やファイル名ではなくコマンドラインから手動入力のように見えるようにするにはどうすればよいですか?
zsh
まあ...これはbashでのみ発生しますが、bashではうまく動作することがわかりました。おそらく、変数zsh
の拡張は特別かもしれません。
だから誰でもzshでこれをうまく機能させる方法を教えてくれたらとても感謝します。それ以外の場合は、bashでのみこれを実行できます。
ベストアンサー1
"$TEMPP"
私は空白が解釈されるかどうかを制御しようとしていると思います。 (これはGCCの問題ではなく、シェルがコマンドラインを解析する問題です。)
これがbash
すること:
$ F="foo bar baz"
$ for f in $F; do echo $f; done
foo
bar
baz
これがzsh
すること:
$ F="foo bar baz"
$ for f in $F; do echo $f; done
foo bar baz
zsh
スペースを説明する必要があります。 zshでこれを行うエレガントな方法があるかもしれません(わかりませんが、質問のタイトルを変更してタグ付けすると、より便利な答えが得られます)。これは問題を解決しますが、問題に対する負担は少し大きくなります。
eval gcc -M $TEMPP somefile.c