前言
Shell编程中,不仅会是使用变量,还经常会使用$
、\
、单引号、双引号、反引号等符号。
这些符号在使用中,有时候难免混乱,所以整理此文,便于学习,希望对你有用
文章目录
一. 符号的介绍与对比
如下为几种符号简单区别对比:
- 美元符号
$
,主要用于引用变量值,例如定义变量MXS=moxiaosheng
,引用时,需要用$MXS
; \
反斜杠,主要是用于对特定的字符实现转义,保留原有意义,例如echo “\$MXS”
结果会打印$MXS
,而不会打印moxiaosheng
;- 单引号
' '
,单引号又称为强引,不具有变量置换的功能,所有的任意字符还原为字面意义,实现屏蔽Shell元字符的功能; - 双引号
" "
,双引号又称为弱引,具有变量置换的功能,保留$(使用变量前导符)
,\(转义符)
, `(反向引号)元字符的功能; - 反向引号``,反引号,位于键盘Tab键上面一行的键,用作命令替换(相当于$(…))。
二. 单引号和双引号的区别
在shell中,单引号(')和双引号(")在处理字符串时有以下区别:
2.1. 变量展开:
- 单引号字符串中的变量不会被展开,将原样输出。例如,echo ‘Hello $name’ 输出结果为 “Hello $name”。
- 双引号字符串中的变量会被展开为其对应的值。例如,echo “Hello $name”,如果变量 name 的值为 “Alice”,则输出结果为 “Hello Alice”。
#!/bin/bash
name="Alice"
# 单引号字符串中的变量不会展开
echo 'Hello $name' # 输出结果为 "Hello $name"
# 双引号字符串中的变量会展开
echo "Hello $name" # 输出结果为 "Hello Alice"
2.2 命令替换
- 单引号字符串中的命令替换不会被执行,命令将原样输出。例如,echo ‘Today is $(date)’ 输出结果为 “Today is $(date)”。
- 双引号字符串中的命令替换会被执行,并将命令的输出结果插入字符串中。例如,echo “Today is $(date)” 将执行命令 “date” 并将输出日期插入字符串中。
2.3 转义字符的处理
- 在单引号字符串中,转义字符(例如 \n、\t)仅被视为普通字符,不会被特殊处理。
- 在双引号字符串中,转义字符会被解释,并按照其含义进行替换。例如,echo “Hello\tWorld” 输出结果为 “Hello World”,其中 \t 被解释为制表符。
2.4 引号的嵌套
- 单引号字符串中可以包含双引号,双引号字符串中可以包含单引号。例如,echo ‘He said, “Hello”’ 和 echo “It’s a nice day” 都是合法的。
只要记住一点就行了: 单引号一般会保留原样输出。
三. 转义符
3.1 转义符的概念
转义符在shell脚本中用于解决特殊字符的处理问题。当需要在字符串中插入具有特殊含义的字符时,可以使用转义符来取消其特殊含义,将其视为普通字符。
在shell脚本中,常见的转义符是反斜杠(\),其后跟着需要进行转义的字符。
3.2 常用的转义符
\n:换行符
\t:制表符
\":双引号
\':单引号
\\:反斜杠
\$:美元符号
```:反引号
3.3 使用案例
echo "This is a sentence with a newline.\nThis is on a new line."
echo "The price is \$10"
这样可以输出$
符号
使用脚本完成一个包含学生姓名和成绩的表格:
#!/bin/bash
# 表头
echo -e "姓名\t成绩"
# 学生数据
echo -e "Alice\t90"
echo -e "Bob\t85"
echo -e "Charlie\t92"
echo -e "David\t87"
输出结果:
姓名 成绩
Alice 90
Bob 85
Charlie 92
David 87
实现一个进度条:
#!/bin/bash
echo "执行命令:yum install mariadb"
echo "开始安装..."
# 安装命令(取消输出)
yum install -y mariadb --quiet &
# 监控安装进度
while :
do
sleep 1
echo -n "#"
if yum list installed mariadb >/dev/null 2>&1; then
break
fi
done
echo ""
echo "安装完成"
使用yum install -y mariadb --quiet命令来安装mariadb软件包,并通过&运行它以启动后台安装过程。然后,使用while循环检查是否已经安装了mariadb软件包,如果安装完成则终止循环,并输出安装完成的消息。
安装时间仍然取决于多个因素。但使用实际的安装命令来监控进度会更接近实际情况,并且在安装完成后才会终止进度条。
总结
以上就是各类符号的使用方法,希望对你有用,我是沐风晓月, 我在csdn等你。