理解bash逻辑。(运算符和引号)
我以为单引号把一切都写下来了?但这是给的输出 为什么这一行只接受整数?我知道这个理解bash逻辑。(运算符和引号),bash,operators,quotes,double-quotes,Bash,Operators,Quotes,Double Quotes,我以为单引号把一切都写下来了?但这是给的输出 为什么这一行只接受整数?我知道这个^是用于开头的,+表示前面必须至少出现一次。但就我的$知识而言,我不确定。它不接受像1a这样的东西吗 egrep ^[0-9]+$ 为什么此行只接受小数点后2位的小数?我认为+只允许它确保起始号码必须是0-9。那么为什么它不接受像1a.00这样的东西呢 “新书名“$BKTILE”添加成功!”是一个双引号字符串,碰巧包含一些单引号。如果您想查看文本“$BKTILE”,可以使用:“新书标题”“添加成功”“$BKTILE
^
是用于开头的,+表示前面必须至少出现一次。但就我的$
知识而言,我不确定。它不接受像1a
这样的东西吗
egrep ^[0-9]+$
为什么此行只接受小数点后2位的小数?我认为+
只允许它确保起始号码必须是0-9
。那么为什么它不接受像1a.00这样的东西呢
“新书名“$BKTILE”添加成功!”
是一个双引号字符串,碰巧包含一些单引号。如果您想查看文本“$BKTILE”
,可以使用:“新书标题”“添加成功”“$BKTILE!”
,它是3个字符串(两个双引号(其中一个以单引号结尾,另一个以单引号开头)和一个单引号连接在一起
$
与行尾匹配
1a.00
不匹配,因为它的形式不是“行的开头后跟一定数量的数字,后面跟一个文本”
,但它将匹配^[0-9]+[a][.][0-9][0-9]
我以为单引号把一切都写下来了?但这是给新书标题“BASH”的输出成功添加的
在您的示例中:
egrep ^[0-9]+[.][0-9][0-9]
在双引号字符串(“”
)中,不解释单引号(“”
),而是解释变量
如果您这样做:
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!'
bktitle="BASH"
echo "New book title \'$bktitle\' added successfully!"
您将看到(在前两个示例中):
已成功添加新书名“$bktile”代码>
或:
已成功添加新书标题$bktitle代码>
单引号不能解释变量或双引号(或\escape sequences
)
为什么这一行只接受整数?我知道这个^
是用来开头的,+
是用来表示前面必须至少出现一次。。但就我的$
知识而言,我不确定。但它会不会接受像1a
这样的东西
egrep ^[0-9]+$
关于^
和+
你是对的<代码>[0-9]
匹配0到9之间的任何数字<代码>$
表示以结尾,并表示字符串的结尾
bktitle="BASH"
echo 'New book title $bktitle added successfully!'
匹配任何包含1个或多个数字的字符串(从头到尾),而不匹配任何其他数字
现在是最后一个问题:
egrep'^[0-9]+[.][0-9][0-9]'
为什么此行只接受小数点后2位的小数?我认为+
只允许它确保起始数字必须是0-9。那么为什么它不接受像1a.00这样的东西呢
是的,这将匹配正好包含两位小数的十进制数
如果您希望它也接受字母,只要它以数字开头,您就需要:
^[0-9]+$
[0-9a-z]
匹配任何数字0-9和字母a-z。它与bash无关。这不是bash语言吗?谢谢您的解释。1.但我以为单引号会显示文字?正如我发布的所有代码一样,它们正是我想要的,但我不理解它们背后的逻辑。2.既然$与行匹配,“1a1”会成功吗?3.但这难道不意味着前面的0-9应该至少出现一次,然后是一个。和两个小数位。那么为什么1a.00不匹配呢?单引号将显示文本。但是,如果在双引号字符串中加上单引号,那么仍然有一个双引号字符串,并且会对变量进行插值。没有“1a1”包含除[0-9]以外的字符,因此它不匹配。如果没有在双引号中插入单引号,是否可以安全地使用bktTitle=“BASH”echo“New book title$bktTitle added successfully!”所以当您说$匹配字符串的结尾?它是指字符串的最后一个字符吗?或者像这样使用“^[0-9]+$”意味着从0-9开始,并且必须至少出现一次并以它结束?