谈一谈Linux中Shell编程的转义和引用

shell中的两类字符

(1)、普通字符:

Shell中除了本身的字面意思外没有其他特殊意义。

(2)、元字符:

Shell的保留字符,在Shell中有着特殊意义的专用字符。

1、转义

指使用转义符引用单个字符,从而使其表达单纯的字符的字面含义。

Shell中的转义符是反斜杠””,使用转义符的目的是使转义符后面的字符单纯地作为字符出现,而不解释其特殊的含义。

案例1:

[root@localhost odysee]# name=odysee

[root@localhost odysee]# echo ${name}

odysee

[root@localhost odysee]# echo ${name}

${name}

解释:

echo ${name}:

“$”作为一个特殊的字符,Shell解释为”取出并打印name变量的值”。

echo ${name}:

这里”$”使”$”失去了特殊的含义,只作为一个符号出现。

shell转义字符_字符转义工具_字符转义c语言

案例2:

*:

一般作为的通配符使用。

例如:

查找odysee 的sh结尾的所有文件

find ~odysee/ -name “*.sh”

shell转义字符_字符转义工具_字符转义c语言

我现在需要它作为一个普通的*

例如:

echo 9*9 = 81

这里就作为一个普通的字符来使用

字符转义工具_shell转义字符_字符转义c语言

2、 引用

shell转义字符_字符转义c语言_字符转义工具

指字符串用某种符号括起来,以防止特殊字符被解析为其他意思。

Shell中的4种引用符

“”[双引号]:

又叫”部分引用”或”弱引用”,可以引用出除$、“、之外的所有字符。

即:$、反引号(`)、转义符()特殊字符依然会被解析为特殊意义。

”[单引号]:

又叫”全引用”或”强引用”,可以引用所有字符。

即:所有的特殊字符都不会被shell解释。

“[反引号]:

将反引号括起来的内容解释为系统命令。

也是命令替换的一种,将命令的标准输出作为值赋给某个变量。

最后有补充。

[转义符]:

转义符引用单个字符,从而使其表达单纯的字符的字面含义。

案例1:

测试双引号

[root@localhost home]# num=9527

[root@localhost home]# echo “${num}”

9527

[root@localhost home]# echo “${num}”

${num}

[root@localhost home]# echo “`ls`”

odysee

stephen

userShell

比较简单,就解释一下echo “`ls`”

echo “`ls`”:

“”内的“依然表示特殊的含义,提取ls命令执行后的结果shell转义字符,然后在echo出来。

字符转义工具_字符转义c语言_shell转义字符

案例2:

测试单引号

[root@localhost home]# count=9527

[root@localhost home]# echo ‘${count}’

${count}

[root@localhost home]# echo ‘${count}’

${count}

单引号里面的所有的特殊字符都不会被shell解释。

字符转义工具_shell转义字符_字符转义c语言

案例3:

测试反引号

[root@localhost home]# echo `ls ~/`

anaconda-ks.cfg Desktop Documents Downloads General Music original-ks.cfg Pictures Public Templates Videos

[root@localhost home]#

提取ls ~命令执行后的结果,然后在echo出来。

字符转义工具_字符转义c语言_shell转义字符

3、 命令替换

指将命令的标准输出作为值赋给某个变量shell转义字符,Shell编程中使用比较频繁。

例如:

shell转义字符_字符转义c语言_字符转义工具

count=`ls ~/`或者count=$(ls ~/)

将ls ~/执行的结果赋值给count变量。

命令替换的两种方式:

(1)、反引号

(2)、$()

案例:

[root@localhost home]# count=`ls ~/`

[root@localhost home]# echo ${count}

anaconda-ks.cfg Desktop Documents Downloads General Music original-ks.cfg Pictures Public Templates Videos

[root@localhost home]# num=$(ls ~/)

[root@localhost home]# echo ${num}

anaconda-ks.cfg Desktop Documents Downloads General Music original-ks.cfg Pictures Public Templates Videos

[root@localhost home]#

这两者执行的结果是相同的

字符转义c语言_字符转义工具_shell转义字符

测试完成。

欢迎大家给予宝贵的意见或者建议。

欢迎大家补充或者共享一些其他的方法。

感谢支持。

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,加站长微信免费获取积分,会员只需38元,全站资源免费下载 点击查看详情
站 长 微 信: thumbxmw