shell脚本 双引号 单引号

shell脚本 双引号 单引号

在Shell脚本中,双引号和单引号都可以用来引用字符串,但它们有一些区别:

双引号:允许变量扩展,即在双引号中可以引用变量的值。

单引号:禁止变量扩展,即在单引号中引用的任何内容都会被视为字符串的一部分,而不会解释为变量或命令。


#!/bin/bash
 
# 定义变量
name="World"
 
# 使用双引号
echo "Hello, $name"  # 输出:Hello, World
 
# 使用单引号
echo 'Hello, $name'  # 输出:Hello, $name,而不是Hello, World

11

在上述示例中,第一个echo命令使用双引号,输出了变量的值(World)。第二个echo命令使用单引号,输出了字符串本身(Hello, $name),并没有解释$name为变量。

单引号’ ',单引号又称为强引,不具有变量置换的功能,所有的任意字符还原为字面意义,实现屏蔽Shell元字符的功能;
双引号" ",双引号又称为弱引,具有变量置换的功能,保留$(使用变量前导符), (转义符), `(反向引号)元字符的功能;

2.4 引号的嵌套
单引号字符串中可以包含双引号,双引号字符串中可以包含单引号。例如,echo ‘He said, “Hello”’ 和 echo “It’s a nice day” 都是合法的。
只要记住一点就行了: 单引号一般会保留原样输出。

变量用双引号括起来的意义

如果变量不用双引号括起来,比如echo $a,那么隐含的意义就是,把$a变量的字符串,按照空格、制表符、换行符等符号来分割开。然后把这些分割后的每一项再按 glob 模式展开,最后把这些值,再用一个空格重新连接起来,并打印出来。 
如果碰巧$a变量的字符串中,有连续两个空格符号,或者有制表符,那么echo $a就与程序员的思路出现了不一致。比如下例:
qilei@AFAAW-704030720:~$ cat a.sh
#!/bin/bash
 
a="1 2  3 4"
echo $a
echo "$a"
 
qilei@AFAAW-704030720:~$ ./a.sh
1 2 3 4
1 2  3 4
qilei@AFAAW-704030720:~$

推荐今后编程中,变量必须用双引号括起来
bash编程里的变量,全部用双引号括起来。这样更符合程序员的思路。
比如echo “$a”
举一反三,脚本命令的参数变量,也是同理的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值