「zsh」で変数の解釈を変更するには?

「zsh」で変数の解釈を変更するには?

変数を設定しました。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

おすすめ記事