bash编程中,变量“用双引号”和“不用双引号”的区别

本文探讨了在Bash编程中使用双引号括起变量的重要性和必要性,通过实例说明了这样做如何避免因特殊字符导致的意料之外的行为。此外,还介绍了echo命令的不同选项及其使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

同事遇到一个bash编程上的bug,一时没有解决方法。
后经百度,虽然找不到问题直接原因的出处;但是在知乎上看到了有人做出了合理的解释。

shell编程中用双引号引用参数和不用双引号有什么区别? - 知乎
https://www.zhihu.com/question/33466555

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

如果变量不用双引号括起来,比如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"
举一反三,脚本命令的参数变量,也是同理的。

附加echo的简单说明

如下例所示,
echo -n 字符串;其中选项n表示输出文字后不换行。
echo -e 字符串;才能使用转义符号\

qilei@AFAAW-704030720:~$ echo "\n"
\n
qilei@AFAAW-704030720:~$ echo -e "\n"


qilei@AFAAW-704030720:~$ echo -ne "\n"

qilei@AFAAW-704030720:~$
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值