Shell 变量

来源:互联网 发布:java list 泛型写法 编辑:程序博客网 时间:2024/06/07 23:04

Shell 变量

1、创建子进程的时候,环境变量拷贝一份到子进程的内存栈空间,因此子进程里对环境变量的修改,并不影响父进程内存栈空间的值;

2、常用内置变量

  • $? —— 上一个命令的返回值

  • $# —— 传递给shell脚本的命令行位置参数的个数

  • $0 —— 调用的shell脚本的名称

  • $n —— 第n个位置参数的值,n从1开始,如 $1, $2, $3, ... $9, ${10}

  • $* —— 把所有传递给shell脚本的命令行参数,用一个字符串传递

  • $@ —— 把所有传递给sell脚本的命令行参数,但是每个位置参数分别用引号引起来传递

  • $$ —— 当前进程的pid号

  • $! —— 最后一个提交到后台执行的进程的pid号

Shell 变量扩展

1、判断变量是否被设置
${variable:=word}若 variable 被设置且值不为空null,则该表达式的值为variable的值;否则,该表达式的值为字符串word;
variable本身的值也被改变${variable:–word}若 variable 被设置且值不为空null,则该表达式的值为variable的值;否则,该表达式的值为字符串word${variable:+word}若 variable 被设置且值不为null,则该表达式的值为字符串word;否则,该表达式的值为空null例如:name="michole";echo ${name:=Hello};
echo ${nonname:=Hello};
echo $nonnamemichole
Hello
Hello <变量被赋值>echo ${name:-Hello};
echo ${nonname:-Hello};
echo $nonnamemichole
Hello
  <变量仍旧保持原值>echo ${name:+Hello};
echo ${nonname:+Hello};
echo $nonnameHello
 
  <变量仍旧保持原值>



2、截取变量的子串

${variable:offset}从偏移量 offset 开始截取 variable 的子串${variable:offset:length}从偏移量 offset 开始截取 length 长度的 variable 的子串${variable#pattern}从左到右查找第一个匹配上pattern的前导子串部分,并移除该部分,返回剩余字符串${variable##pattern}从左到右查找最长一个匹配上pattern的前导子串部分,并移除该部分,返回剩余字符串${variable%pattern}从右到左查找第一个匹配上pattern的后缀子串部分,并移除该部分,返回剩余字符串${variable%%pattern}从右到左查找最长一个匹配上pattern的后缀子串部分,并移除该部分,返回剩余字符串${#variable}返回字符串长度例如:path="/usr/bin/2009/bin/bin.sh";echo ${path:2};sr/bin/2009/bin/bin.shecho ${path:2:8};sr/bin/2echo ${path#/bin};
echo ${path#*/bin};
echo ${path##*/bin};/usr/bin/2009/bin/bin.sh <没匹配上模式:/bin,返回原串>
/2009/bin/bin.sh <匹配上模式:*/bin>
.sh <最长匹配上模式:*/bin>echo ${path%/bin};
echo ${path%/bin*};
echo ${path%%/bin*};/usr/bin/2009/bin/bin.sh <没匹配上模式:/bin,返回原串>
/usr/2009/bin <匹配上模式:/bin*>
/usr <最长匹配上模式:/bin*>echo ${#path};24
原创粉丝点击