Linux Bash脚本中单引号、双引号、反引号的区别和使用技巧

1. 单引号(‘’)

1.1 单引号的基本用法

特点:内容原样输出,单引号内的所有字符都会被当作普通字符处理,不进行任何替换

用途:创建一个完全不进行变量替换和命令替换的字符串

var="NieKeYi"

echo 'The value of var is $var'  # The value of var is$var

在这里插入图片描述

1.2 使用单引号的注意事项

单引号内不能包含单引号本身

2. 双引号(“”)

2.1 双引号的基本用法

特点

  • 双引号内的变量(如 $VAR)会被替换为变量的值
  • 双引号内的反斜杠(\)用于转义特殊字符(如 \$, \! 等)

用途:创建一个进行变量替换、命令替换和转义字符处理的字符串

var="NieKeYi"

echo "The value of var is $var"  # 输出:The value of var is NieKeYi

在这里插入图片描述

2.2 使用花括号 {} 包裹变量名,提高指令的可读性

可以使用花括号 {} 包裹变量名,提高指令的可读性

var="NieKeYi"

echo "The value of var is ${var}"  # 输出:The value of var is NieKeYi

在这里插入图片描述

2.3 在双引号内转义特殊字符

如果不希望特殊字符在双引号内部被正常解释,可以在特殊字符前加上反斜杠 \ ,使其变成普通字符

echo "My home directory is ${HOME}" # 输出:My home directory is /home/username

echo "My home directory is \${HOME}" # 输出:My home directory is ${HOME}

在这里插入图片描述

2.4 使用双引号的注意事项

如果需要在字符串中包含双引号,需要使用反斜杠转义

echo "He said, \"Hi\""  # He said, "Hi"

在这里插入图片描述

3. 反引号(``)

3.1 反引号的基本用法

特点:反引号内的命令会先执行,然后将命令的执行结果替换到反引号的位置

用途:在原命令中执行另一个命令,并将命令的输出结果作为原命令的参数


查看当前日期

current_date=`date "+%Y-%m-%d"`

echo "Today is ${current_date}"  # 输出:Today is [当前日期]

在这里插入图片描述

3.2 反引号在现代Bash脚本中的写法

在现代的 bash 脚本中,更推荐使用 $() 代替反引号进行命令替换,因为 $() 支持嵌套且更具可读性

current_date=$(date "+%Y-%m-%d")

echo "Today is ${current_date}"  # 输出:Today is [当前日期]

在这里插入图片描述

4. 扩展:感叹号在Bash脚本中的作用

如果运行以下指令,会输出什么呢

echo "My id is !325."

我们执行命令,发现报错了,这么简单的一句指令为什么会报错呢

在这里插入图片描述

原来,在 Bash 脚本中,当在双引号中使用感叹号时,Bash 会尝试将其解释为对历史命令的引用


我们输入 history 指令查看历史命令

在这里插入图片描述

发现历史指令中没有编号为 325 的命令,所以 Bash 就报错了,因为它找不到相应的事件


我们将 325 改成 320,发现命令成功执行了,!320 也被替换成了第 320 条历史指令——ls

在这里插入图片描述

因此,在设置密码时,最好不要使用 ! $ * 等在 Bash 脚本中有特殊含义的特殊字符(其它特殊字符还是可以使用的),避免在通过指令启动项目时出现不必要的错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聂 可 以

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值