var = -が機能しないのはなぜですか?

var = -が機能しないのはなぜですか?

質問を書くとき:

ファイルtouch名を指定する方法cat-

-名前付きファイルが変数に保存される場合を一般化しようとしています。

では、zsh単一のハイフンを含むように変数を設定しようとしています。

% var=-
% echo $var

% var='-'
% echo $var

% var=\-
% echo $var

%

なぜ動作しないのですか?

この点でなぜzsh違うのですか?bash

どのように$var設定しますか-

ベストアンサー1

また重要なのは、変数の実際の値ではなく、変数の状態であることが多いです。このecho場合。 Zsh はecho単一のダッシュをオプションの終了マークとして扱うので、削除します。オンラインマニュアル:

標準に準拠するために、二重ダッシュはオプション処理を終了せずに直接印刷されます。ただし、単一のダッシュはオプション処理を終了するため、最初のダッシュ(オプションの後に続くことがあります)は印刷されませんが、その後のすべてのダッシュは引数として印刷されます。単一ダッシュは他のシェルとは異なる動作をします。テキストを印刷するより移植性の高い方法については、次を参照してください。印刷機能、zshでテキストを印刷するより制御された方法については、以下を参照してください。印刷

だから私たちは:

zsh% echo -

zsh% echo - -n
-n
zsh% var=-
zsh% printf "%s\n" "$var"
-

また見なさい:

おすすめ記事