POSIXシェル構文がFOO = bar foobarを受け入れる方法

POSIXシェル構文がFOO = bar foobarを受け入れる方法

POSIXシェル構文とは何ですか? http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10

次の割り当てを含む単純なコマンドを受け入れます。

FOO=bar foobar

ここで、最初の単語は規則7bに従ってトークンとして受け入れる必要がありますASSIGNMENT_WORD(ただし、この規則が関連する制作に適用されることは明示的に指定されていませんが、ASSIGNMENT_WORD理解できると思います)。

その後、2番目の言葉は受け入れられません。これを減らす唯一の方法は、cmd_word本番を使用することです。ただし、これを行うには、規則7bではこれをaと言い、WORD規則7bではを含まない単語については何も言及しません=

規則7bには、次のフレーズを追加する必要があります。

If the TOKEN does not contain `=` then it is a `WORD`.  

これがないと、現在作成されている構文が正しくありません。私は正しいですか?

ベストアンサー1

文法は1つの単語のみを割り当て、それ以降の単語はコマンドとして扱われます。

あなたが引用した規則はTOKEN、引用符のないスペースは含めることはできません。バラより2.3 トークン認識、例えば、

  1. 現在の文字が引用されていない場合<blank>、前の文字を含むすべてのトークンは区切り、現在の文字は削除されます。

おすすめ記事