我以爲單引號使一切都按字面?但這是給出New Book title 'BASH' added successfully
的輸出。
在您的例子:
bktitle="BASH"
echo "New book title '$bktitle' added successfully!"
內使用雙引號字符串(""
),單引號(''
)不解釋,但變量。
如果你這樣做:
bktitle="BASH"
echo 'New book title \'$bktitle\' added successfully!'
或者這樣:
bktitle="BASH"
echo "New book title \'$bktitle\' added successfully!"
或者這樣:
bktitle="BASH"
echo 'New book title $bktitle added successfully!'
你會看到(在頭兩個例子):
New book title '$bktitle' added successfully!
或者:
New book title $bktitle added successfully!
單引號不解釋變量或雙引號(或\escape sequences
)。
爲什麼這行只接受整數?我知道這^
是開始,+
是爲了意味着前面必須至少發生一次..但我的知識$
我不知道。但它會不會接受像1a
?
你說得對^
和+
! [0-9]
匹配0到9之間的任何數字。$
表示結尾 - 與,並表示字符串的結尾。
^[0-9]+$
匹配任何包含一個或多個數字的字符串,從頭到尾,沒有別的。
現在你的最後一個問題:
egrep '^[0-9]+[.][0-9][0-9]'
爲什麼會這樣行只接受小數整整2位小數?我認爲+
只會允許它確保起始數字必須是0-9。那爲什麼不接受像1a.00
這樣的東西?
是的,這將會匹配包含正好兩位小數的十進制數。
如果你想讓它接受字母爲好,只要它以數字開頭,你需要:
egrep '^[0-9][0-9a-z]+[.][0-9][0-9]'
[0-9a-z]
任意數量的0-9,以及任何字母A-Z匹配。
它與bash無關.. –
這不是bash語言嗎? –