一、引用代码
1.引用变量 Quoting Variables
1.1 单引号(‘’),强引用,保持字面意思 (在单引号中,转义字符\不起作用)
1.2 双引用 (“”),弱引用,发生变量替换
1.3 双引用中通过直接使用变量名的方法来引用变量,可以:
1.3.1 阻止所有在引号中的特殊字符被重新解释
1.3.2 阻止单词分隔(word splitting)
例:
[root@server1 ~]# echo "-n ok"
-n ok
[root@server1 ~]# echo -n ok
ok[root@server1 ~]#
1.4 如果在双引号中包含!:
1.4.1 在命令行中,感叹号被解释成历史命令,所以会产生一个错误
1.4.2 在脚本中,bash历史机制是被禁用的,就不会存在这个问题
# 不是完整脚本,帮助理解
variable1="a variable containing five words"
COMMAND This is $variable1
#这个相当于传递给COMMAND 7个参数
# “This” "is" "a" "variable" "containing" "five" "words"
COMMAND "This is $variable1"
#这个相当于传递给command1个参数
#“This is variable containing five words”
variable2="" #空白
COMMNAD $variable2 $variable2 $variable2 #不带参数执行
COMMNAD "$variable2" "$variable2" "$variable2" #带三个空参数执行
COMMNAD "$variable2 $variable2 $variable2" #带一个空参数执行
2.转义 escaping
[root@server1 ~]# ls -l [Vv]* 列出当前目录下所有开头大写v和小写v的文件
[root@server1 ~]# ls -l '[Vv]*' 列出[Vv]的文件
[root@server1 ~]# grep '[Ff]irst' *.txt 查找所有txt文件中first或First
[root@server1 ~]# echo $(ls -l)
[root@server1 ~]# echo "$(ls -l)"
二、字符转义
1. \反斜线 backslash 转义符
1.1 “怪—> 正常”
\$ \” \’
1.2”正常—> 怪”
| \n | 新的一行 |
| \r | 回车 |
| \t | 水平制表符 |
| \v | 垂直制表符 |
| \b | 后退符 |
| \a | “alert” (蜂鸣或者闪烁) |
| \0xx | 转换为八进制的ASCLL码,等价于0xx |
#!/bin/bash
#转义符
#在双引号中,会输出 \v\v\v\v
echo "\v\v\v\v"
echo
# echo 使用-e 选项,做转义处理
echo "======================="
echo "VERTICAL TABS"
echo -e "\v\v\v\v" #打印四个垂直制表符
echo "======================="
echo "QUOTATION MARK"
echo -e "\042" # 8进制ASCII码的42,是双引号
echo "======================="
echo
# 如果使用$'\X'结构,就不需要-e选项了
echo "NEWLINE AND BEEP"
echo $'\n'
echo $'\a' #蜂鸣
echo "======================"
echo
echo "QUOTATION MARKS"
echo $'\t \042 \t' # 被水平制表符 包围的双引号
echo $'\t \x22 \t' # 与上面类似,换成16进制数
echo "======================"
# 给变量赋值,ASCII字符
quote=$'\042'
echo "$quote This is a quoted stirng,$quote and this lies outside the qutotes"
echo
#变量的值,可以有多个ASCII字符
triple_underline=$'\137\137\137' #八进制137是下划线
echo "$triple_underline UNDERLINE $triple_underline"
echo
exit 0

"本文详细介绍了Shell脚本中引用变量的规则,包括单引号、双引号的使用及其区别,以及如何阻止特殊字符的重新解释和单词分隔。同时,讨论了转义字符的应用,如在不同场景下使用反斜线``进行字符转义,以及在脚本中如何正确处理历史命令和防止错误。此外,还展示了如何利用转义符创建多行字符串和特殊ASCII字符。"
1365

被折叠的 条评论
为什么被折叠?



