揺れるダッシュ(チルダ、〜)はどのような言語構造ですか?

揺れるダッシュ(チルダ、〜)はどのような言語構造ですか?

ホームディレクトリの代わりにスイングダッシュを使用できます。現在のユーザーによって値が異なります。この意味では変数と同じです。

しかし、変数ではありません。私はそれをすることはできませんが、echo $~私はそれをすることができますecho ~

どのような言語構造ですか?

ベストアンサー1

チルダ( ~)が引用符なしで単独で、またはユーザー名の接頭辞として表示される場合チルダ拡張。これはシェルによって行われた単語拡張の1つです。性格これは、プログラムを構成し、パラメーター拡張前に発生する構文表示です。 ㅏ言葉シェル入力(コマンドラインのスクリプトやコマンドなど)のトークンですが、まだ認識されていません。予約語if、または、doまたはオペレーター||わかりました&&

これは、場合によっては、チルダが変数ではなく、チルダ拡張フェーズでシェルに具体的に属する単語を処理する文字であることを意味します。これは、現在の単語を他の拡張タイプの候補としてマークする$のと似ています。$

これは定義されていますPOSIX経由(これは実際に拡張が発生したときに説明したよりも少し慎重です。)

2.6.1 チルダの拡張

「チルダプレフィックス」は、単語<tilde>の先頭に引用符が含まれていない文字で構成され、その後に<slash>単語に引用符が含まれていない最初の文字の前のすべての文字が続き、それ以外の場合は単語のすべての文字が続きます<slash>。割り当て(XBD変数の割り当てを参照)では、単語の先頭(つまり、割り当て<equals-sign>の後)、引用符なしの文字の後、またはその両方<colon>に複数のチルダプレフィックスを使用できます。課題のチルダプレフィックスは、引用符のない最初または<colon>で終わります<slash>。チルダプレフィックスに引用符が付けられていない文字がある場合、チルダプレフィックスの後の文字は<tilde>ユーザーデータベースで可能なログインとして扱われます。ポータブルログイン名には、LOGNAMEXBDその他の環境変数の環境変数の説明で指定されている文字セット以外の文字を含めることはできません。ログイン名が空の場合(つまり、チルダプレフィックスにチルダのみが含まれている場合)、チルダプレフィックスは変数の値に置き換えられますHOME。設定しないとHOME結果は指定されません。それ以外の場合は、チルダプレフィックスをgetpwnam()POSIX.1-2017システムインタフェースボリュームで定義されている関数を使用して取得したログインに関連付けられた初期作業ディレクトリのパス名に置き換える必要があります。システムがログイン名を認識しない場合、結果は定義されません。

チルダ拡張で生成されたパス名は、フィールドの分割とパス名の拡張による変更を防ぐために引用符で囲む必要があります。

おすすめ記事