shell-variables
Shell Parameter Expansion
| format | return and usage |
|---|---|
| $var | 返回变量值,如var="Barry",则$var即是Barry。""是界定符,而不是字符串中的字符 |
| ${var} | 返回变量值,推荐这种写法,代码可读性更好,避免歧义 |
| ${#var} | 返回字符串长度,如var="Barry",则返回5 |
| ${var:start_index} | 返回从start_index开始一直到字符串末尾。如 var="0123456789"${var:0}返回0123456789${var:6}返回6789${var:0-3}返回789(此处0-3表示从倒数第三个字符开始,即从7开始) |
| ${var:start_index:length} | 返回从start_index开始的length个字符。length是要取得的字符串长度,可以为负值。如 var=0123456789${var:2:5}返回23456${var:5:-2}返回567(此处-2表示剩余两个字符不要)${var:0-3:-1}返回78 |
| ${var#string} | 返回从左边删除string后的字符串,尽量短的去匹配。如 var="http://127.0.0.1/index.php"${var#*/}返回/127.0.0.1/index.php |
| ${var##string} | 返回从左边删除string后的字符串,尽量长的去匹配。如 var="http://127.0.0.1/index.php"${var##*/}返回index.php |
| ${var%string} | 返回从右边删除string后的字符串,尽量短的去匹配。如 var="http://127.0.0.1/index.php"${var%/*}返回http://127.0.0.1 |
| ${var%%string} | 返回从右边删除string后的字符串,尽量长的去匹配。如 var="http://127.0.0.1/index.php"${var%%/*}返回http: |
| ${var:-newstring} | 如果var为空值或未定义,则返回newstring如果 var不为空,则返回原值 |
| ${var:=newstring} | 如果var为空值或未定义,则返回newstring,并把newstring赋值给var如果 var不为空,则返回原值 |
| ${var:+newstring} | 如果var不为空则返回newstring如果 var为空则返回空值 |
| ${var:?newstring} | 如果var为空值或未定义,则将newstring写入标准错误流,本语句失败如果 var不为空则返回原值 |
| ${var/substring/newstring} | 返回var中第一个substring被替换成newstring后的字符串。如 var=088880${var/0/Barry}返回Barry88880 |
| ${var//substring/newstring} | 返回var中所有的substring被替换成newstring后的字符串。如 var=088880${var//0/Barry}返回Barry8888Barry |
| ${!var} | 变量名的变量 如 hello="this is some text"; var="hello"${!var}返回this is some text |
| $(command) | 返回command命令执行后所输出的结果如 $(date)返回date命令执行后的输出,相当于date |
| $((算术表达式)) | 返回双括号内算术运算的结果$((20 + 5 * 6))返回50 |
Special Parameters
| format | description |
|---|---|
| $0 | 当前脚本的文件名 |
| $num | num从1开始的数字,$1是第一个参数,以此类推 |
| $# | 传入脚本的参数个数 |
| $* | 所有的位置参数(作为单个字符串) |
| $@ | 所有的位置参数(每个都作为独立的字符串) |
| $? | 当前shell进程中,上一个命令的返回值 |
| $$ | 当前shell进程的pid |
| $! | 后台运行的最后一个进程的pid |
| $- | 显示shell使用的当前选项 |
| $_ | 之前命令的最后一个参数 |