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 使用的当前选项 |
$_ | 之前命令的最后一个参数 |