shell学习

来源:互联网 发布:ai知乎 编辑:程序博客网 时间:2024/05/14 11:24

1.  变量赋值与环境

export   name [=word]  ---------定义或修改变量及其值

export -p--------  打印命令的名称以及所有被导出的变量名称与值

readonly   name   [=word]---------定义不可修改的变量及其值

readonly    -p  -----------打印出只读的所有变量与值  

env   [var =  value]  [ command_name  [ argument........] ] ----------从程序中删除变量

env  -i -------忽略继承的环境,仅使用命令行给定的变量与值

unset   name  ------删除变量

unset  - v   name1    name2 .......---------删除变量1,变量2。。。。。

unset  -f    function  -----------删除指定函数

 

2. 替换运算符

 $ {  varName [ : ] -word }    ----如果varName存在[ 且不为null ] ,则返回其值,否则返回word。一般用在变量未定义时返回默认值

${ varName [ : ]  =word }-------  同上。。。。。。。。,否则设置它的值为word,并返回其值。

${ varName [ : ]  +word}-------同上。。。。。。。。。,否则返回null。一般用来测试变量的存在。

${ varName [ : ]  ?message}-------同上。。。。。。。。,否则显示varName:message,并退出当前命令会脚本。省略message会显示默认信息:parameter null  or  not  set。一般用来捕捉变量未定义导致的错误.

 例如:

假设count未定义,则$ { count  : -1 } 返回值为1 ,$ { count  : =0 } 设置count为0 ,

假设count已定义,则$ { count  : +2 }  返回2,

 

 3. 模式匹配运算符

${ variable  #  pattern  }-------如果模式匹配于变量值开头处,则删除匹配的最短处,并返回剩下的部分。

${ variable  ##  pattern  }-------同上。。。。。。。。。。则删除匹配的最长处,并返回剩下的部分。

${ variable  %  pattern  }-------如果模式匹配于变量值的结尾处,则删除匹配的最短处,并返回剩下的部分。

${ variable  % %  pattern  }-------同上。。。。。。。。,则删除匹配的最长处,并返回剩下的部分。

 

$ { #variable }  --------返回$variable的字符长度

 filename ={ 1 :- /dev/null }    给定参数则使用它,否则使用/dev/null。

  例如:

假设变量path的值为/home/lucky/long.file.name ,则有

      ${path  #  / * /  }   结果为lucky/long.file.name 

      ${ path  ##   / * /   }  结果为long.file.name 

      ${ path  %   .*    }  结果为/home/lucky/long.file

      ${ path  %%   . *   }   结果为/home/lucky/long

 

4. 位置参数

$#        提供传递到shell脚本或函数的参数总数 

$*, $@       一次表示所有用命令行的参数。可用来把命令行参数传递给脚本或函数所执行的程序。

" $* "       将所有命令行参数视为单个字符串,等同于“  $1  $2.......    ”

"$@"      将所有命令行参数视为单独的字符串,等同于“$1 ”     、“ $2  ”  “$3”。。。。。,他会保留内嵌在每个参数里的任何空白。

shift命令用来“截去”来自列表里的位置参数,从左开始,执行后$1的初始值永远消失,取而代之的是$2的旧值,$2的之值变为$3的旧值,以此类推。$#的值依次减1,也可使用参数值改变每次截去的参数个数。

 

 

原创粉丝点击