Bash Shell学习笔记一

1.

 在Linux中执行脚本文件时 以 ./执行的 或者普通方式(输入文件名)执行时是启动子shell执行的,所以,一切环境变量设置在推出后失效

 

 因此在脚本中设置$PATH将失效,如果一定要以脚本方式来设置,需要 .+空格+文件名或者 source 脚本文件的形式执行.

 

2.

Linux中的" " 和 ' ',双引号和单引号的区别是,单引号比双引号要严格,双引号会自动解释$开始的变量,而单引号不会.

 

3.

Linux中将命令执行的结果作为变量可以使用

$(XXX)或者'XXX`,这里'是键盘左上角Tab上面的引号

 

4.

从字符串头截去字符

${string##XX*} -----从左边开始搜索string变量截去最后一个碰到的XX字符之前的所有内容后剩下的字符

如:

string=asfadfasd

${string##f*}=asd

${string#XX*}--------从左边开始搜索string变量截去第一个碰到的XX字符之前的所有内容后剩下的字符

如:

string=asfadfasd

${string#f*}=adfasd

 

5.

从字符串尾部截去字符

${string%%XX*} -----从右边开始搜索string变量截去最后一个碰到的XX字符之后的所有内容后剩下的字符

${string%XX*} -----从右边开始搜索string变量截去第一个碰到的XX字符之后的所有内容后剩下的字符

如:

 

string=asfadfasd

${string%%f*}=as

${string%f*}=asfad

 

 

6.

从字符串中去除指定的字符或字符串,替换字符串中指定的字符或字符串

${string/str1/str2} ----将string变量中第一个出现的str1替换为str2

${string//str1/str2}----将string变量中所有出现的str1替换为str2

如:

${linfengfeiye/fe/sc} = linscngfeiye

${linfengfeiye//fe/sc}=linscngsciye

 

7.

提取字符串

${string:position:length}---提取string变量中从position开始的length个字符(注意下标从0开始)

${string:position}--提取string变量中从position开始到末尾的字符

 

8.

eval关键字使用:取变量的值所对应的变量值

已知:aaa1=test,A=aaa,B=1

取test

TMP=$A$B

eval T="$"$TMP

echo $T

 

9.

测试变量字符串长度是否为0(是否为空)

if [ -z $var ] 或者 if [ ! -n $var ]

如:

var=""

if [ -z $var ]

then

echo 1

else

echo 2

fi

得到 1,为空

 

10.

文件测试选项 (下面都是对应了取真值的例子)

 

if [ -d $file ] --存在并且是目录

if [ -x $file ] --存在并且可执行

if [ -e $file ] 或者 if [-a $file] --存在

if [ -r $file ] --存在并且可读

if [ -w $file ] --存在并且可写

 

 

 

你可能感兴趣的:(String,shell,脚本,测试,File,bash)