环境变量

Shell进程的环境变量,可以从当前进程传给fork出来的子进程,用printenv命令显示当前进程的环境变量。

。。。

本地变量

只存在与当前Shell进程,set命令可以显示当前Shell进程中定义的所有变量和函数

定义变量、定义和导出环境变量

export VARNAME=value

可以用unset删除已定义的环境变量或本地变量

变量的引用

变量的VARNAME,则${VARNAME}可以表示它的值。

运行结果:

命令的代换:‘或$(),建议使用$()进行替换

执行结果:

但‘和$()运行命令的方式又什么不同?

$()可以分解为两个部分,一个是$符号,另外一个是()小括号$符的作用是变量替换,即用变量的值去替换当前的内容,小括号则是开一个子shell优先去执行小括号内部的命令
在$(命令)中,命令部分的内容不会被父shell解析,而反引号的部分却会被解析,例如`\`,`$`,```???
算术代换:$(())
用于算术计算,$(())中的Shell变量取值将转换成整数,例如:

运行结果:

 

 $(())中只能用+-*/和()运算符,并且只能做整数运算。
转义字符:\
\在Shell中被用作转义字符,用于去除紧跟其后的单个字符的特殊意义(回车除外),换句话说,紧跟其后的字符取字面值。
创建一个文件名为“$ $”(中间有空格)的文件可以这样: $ touch \$\ \$

单引号:(保持引号内的所有字符都是字面值,字符串中不能出现单引号)

双引号:(保持引号内所有字符的字面值)(但以下情况除外)

$加变量名可以取变量的值
 反引号仍表示命令替换

\$表示$的字示值
\`表示`的字示值

\"表示"的字示值

\\表示\的字示值 除以上情况之外,在其它字符前面的\无特殊含义,只表示字面值:

 

eval 命令:

告知shell取出eval的参数,重新运算求出参数的内容。eval可读取一连串的参数,然后再依参数本身的特性来执行。参数不限数目,彼此之间用分号分开。

1、eval命令也可以用于回显简单变量,不一定是复杂变量

2、 执行含有字符串的命令

 

test.txt内容:hello shell world!

 

myfile="cat test.txt"

 

(1)echo $myfile  

cat test.txt

 

(2)eval echo $myfile 

hello shell world!

 

从(2)可以知道第一次扫描进行了变量替换,第二次扫描执行了该字符串中所包含的命令:

 

3、命令还可以用来显示出传递给脚本的最后一个参数

4、给每个值一个变量名

posted on 2016-08-07 23:29  My_Blog_Days  阅读(252)  评论(0编辑  收藏  举报