当前位置: 技术问答>linux和unix
新手linux shell问题请教
来源: 互联网 发布时间:2016-11-22
本文导语: 脚本摘抄如下:2个问题: install_task () { typeset task=${1:-} typeset task_name=${task##$NAN_LOCATION/Apps/} ..... } 1. {1:-} 是什么意思? 2. task##$NAN_LOCATION/Apps/ 中的##什么意思? | ...
脚本摘抄如下:2个问题:
install_task ()
{
typeset task=${1:-}
typeset task_name=${task##$NAN_LOCATION/Apps/}
.....
}
1. {1:-} 是什么意思?
2. task##$NAN_LOCATION/Apps/ 中的##什么意思?
install_task ()
{
typeset task=${1:-}
typeset task_name=${task##$NAN_LOCATION/Apps/}
.....
}
1. {1:-} 是什么意思?
2. task##$NAN_LOCATION/Apps/ 中的##什么意思?
|
这个是字符串截取的
http://tech.foolpig.com/2008/07/09/linux-shell-char/
http://tech.foolpig.com/2008/07/09/linux-shell-char/
|
这个东西比较标准的叫法叫 参数展开(Parameter Expansion)
man bash好像就有讲解 楼主你不要拆开来看
man bash好像就有讲解 楼主你不要拆开来看
|
${X:-V} --X设置且非空时使用X的值,否则使用V
${X-V} --X设置时使用X的值,否则使用V
${X:=V} --X设置且非空时使用X的值,否则X赋值为V,并扩展
${X:+V} --X设置且非空时使用V的值,否则不做任何替换
${X+V} --X设置时使用V的值,否则不做任何替换
${X:?V} --X设置且非空时使用X的值,否则输出提示信息V,结束
也就是说,没有:冒号时,仅考虑是否设置,而不管是否为空
${var#pattern} --剔除pattern匹配之后的部分,最小匹配,从头开始
${var##pattern} --剔除pattern匹配之后的部分,最大匹配,从头开始
${var%pattern} --剔除pattern匹配之后的部分,最小匹配,从尾开始
${var%%pattern} --剔除pattern匹配之后的部分,最大匹配,从尾开始
${X-V} --X设置时使用X的值,否则使用V
${X:=V} --X设置且非空时使用X的值,否则X赋值为V,并扩展
${X:+V} --X设置且非空时使用V的值,否则不做任何替换
${X+V} --X设置时使用V的值,否则不做任何替换
${X:?V} --X设置且非空时使用X的值,否则输出提示信息V,结束
也就是说,没有:冒号时,仅考虑是否设置,而不管是否为空
${var#pattern} --剔除pattern匹配之后的部分,最小匹配,从头开始
${var##pattern} --剔除pattern匹配之后的部分,最大匹配,从头开始
${var%pattern} --剔除pattern匹配之后的部分,最小匹配,从尾开始
${var%%pattern} --剔除pattern匹配之后的部分,最大匹配,从尾开始
|
1: 變數設定方式 str 沒有設定 str 為空字串 str 已設定非為空字串
var=${str:-expr} var=expr var=expr var=$str
{1:-}
2:
${string##substr}
##就是匹配最远的一个substr,把它截除掉
var=${str:-expr} var=expr var=expr var=$str
{1:-}
2:
${string##substr}
##就是匹配最远的一个substr,把它截除掉