linux中shell编程详解(理一理Linux中Shell编程的)

谈一谈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变量的值"。

案例2:

*:

一般作为的通配符使用。

例如:

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

find ~odysee/ -name "*.sh"

linux中shell编程详解(理一理Linux中Shell编程的)(1)

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

例如:

echo 9\*9 = 81

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

linux中shell编程详解(理一理Linux中Shell编程的)(2)

2、 引用

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

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命令执行后的结果,然后在echo出来。

linux中shell编程详解(理一理Linux中Shell编程的)(3)

案例2:

测试单引号

[root@localhost home]# count=9527

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

${count}

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

\${count}

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

linux中shell编程详解(理一理Linux中Shell编程的)(4)

案例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出来。

linux中shell编程详解(理一理Linux中Shell编程的)(5)

3、 命令替换

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

例如:

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]#

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

linux中shell编程详解(理一理Linux中Shell编程的)(6)

测试完成。

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

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

感谢支持。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页