Posted at

UNIX系シェルでの文字列クータの扱いにはまる理由

More than 1 year has passed since last update.

その時ばかりのエスケープ方法で切り抜けてきたから色んな記事になるのです。

UNIX系対話シェルの正体はREL(ReadEvalLoop)

今どきのREPLとわざわざPを付けてそれを示すのは評価(EVAL)結果を出力するのみ。

シェルも都度コマンドの実行結果(戻り値で0-127)を表示すればREP(Lは特に不要では?)になる。


本題:

1)全ては式としてまず評価するシステム

2)第一要素は評価後コマンドとしてその値でそれを実行する。

3)それ以降は実行しない式として評価する

4)ワンライナーな記法|繋ぎの時その単位で上記同様

5)評価されないATOM表記が’~’のシングルコーテーション囲み箇所は囲まれた文字列をそのまま返す事。

  ”~”のダブルコーテーション囲みはその中を評価して文字列にする事。


例:


I'am・・・

$ echo "I'm"

I'm

#I'am Payed $00?
$ echo "I'm payed $100."
I'm payed 00.

# SPACE safe for you?
$ echo "I'm payed $ 100."
I'm payed
$ 100.

# ' can't help
$ echo 'I'm payed $100.'
>

# ' can help that's EVAL play.
$ echo 'I'\''m payed $100.'
I'm payed
$100.

# " cote is almighty!
$ echo "I'm payed \$100."
I'm payed $100.

# set val and EVALs
$ MONEY='$100'

$ echo 'I'\''m payed '"$MONEY"'.'
I'm payed $100.

$ $MONEY
bash: $100: コマンドが見つかりません

$


わかりましたね?5)の唯一の法規をしれば振り回されませんね?