我以为单引号使一切都按字面?但这是给出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语言吗? –