Re: echo * の実行結果について

この質問の投稿一覧へ

なし Re: echo * の実行結果について

msg# 1.3
depth:
1
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2013-7-6 20:52 | 最終変更
ktkyz  一人前   投稿数: 22
modukuさん

>どういった理屈で、0以上の文字列である「*」がAAAA BBBB CCCCというファイル名に展開されるんでしょうか?
についてですが、メタキャラクタ(*)の意味は「カレントディレクトリにあるすべてのファイル名又はすべてのディレクトリ名の一覧で条件が0以上の文字列にマッチするものをスペース区切りしたもの」理屈を説明するため、あえて回りくどい表現に;
<言い換えればカレントディレクトリにあるすべてのファイル名やディレクトリ名の文字列をスペース区切したものに展開
ファイル名は少なくとも1文字以上のため、すべてのファイル名・ディレクトリ名を示します。

検証環境の例では、カレントディレクトリにファイル名「AAAA」と「BBBB」と「CCCC」の3つのファイルがある例です。3つのファイル名とも0以上の文字列条件にマッチする、言い換えればすべてのファイル名の間にスペースを入れて
「*」=「AAAA BBBB CCCC」と展開されます。

展開された後に、コマンドに渡されます。
例えば、「echo *」は「*」=「AAAA BBBB CCCC」と展開されechoコマンドに渡され
「echo *」= 「echo AAAA BBBB CCCC」 となります。

文字列をメタキャラクタを使用して「AA*」とした場合は、ファイル名「AAAA」にしかマッチしないため、
「A*」=「AAAA」と展開されます。

投稿ツリー

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.