注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

记录~~~

Stay Hungry. Stay Foolish.

 
 
 

日志

 
 

Shell 变量  

2013-08-07 15:07:11|  分类: Linux/Shell |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

${varname:-word}
${varname:=word}
${varname:?word}
${varname:+word}

上面中每个运算符内的冒号(:)都是可选的。如果省略冒号,则将每个定义中的“存在且非NUll”部分改成“存在”。也就是说,运算符仅用于测试变量是否存在。
POSIX 标准化额外的运算符,用来执行模式匹配与删除变量值里的文本。新的模式匹配运算符,通常是用来切分路径名称的组成部分。例如目录前缀与文件名后缀。
path=/home/tolstoy/mem/long.file.name

${variable#pattern} 如果模式匹配于变量值的开头处,删除匹配的最短部分,并返回剩下的部分。
e.g.: ${path#/*/} 结果: tolstoy/mem/long.file.name

${variable##pattern} 如果模式匹配于变量值的开头处,则删除匹配的最长部分,并返回剩下的部分。
${path##/*/} 结果:long.file.name

${variable%pattern} 如果模式匹配于变量值的结尾处,则删除匹配的最短部分,并返回剩下的部分。
${path%.*} 结果: /home/tolstoy/mem/long.file

${variable%%pattern} 如果模式匹配于变量的结尾处,则删除匹配的最长部分,并返回剩下部分。
${path%%.*} 结果: /home/tolstoy/mem/long

匹配模式:
/*/: 匹配任何位于两个斜杠之间的元素;
.* : 匹配点号之后接着的任何元素;

POSIX标准化字符串长度运算符:
${#variable} 返回$variable值里的字符长度.


位置参数:

positional parameter : 指的是shell 脚本的命令行参数; 同时也表示在shell函数内的函数参数。
他们的名称是以单个的整数来命名。
出于历史原因,当这个整数大于9时,就应该以花括号({}) 括起来:



特殊的“变量”: 提供了对传递参数的总数的访问,以及一次对所有参数的访问:

$#
提供传递到shell脚本或函数的参数总数。
当你是为了处理选项和参数而建立循环时,他会很有用。

while [ $# != 0 ] 以shift逐渐减少$#,循环将会终止
do
case $1 in 处理第一个参数
...
esac
shift 移开第一个参数
done

$*,$@
一次表示所有的命令行参数。这两个参数可用来把命令行参数传递给脚本或函数所执行的程序。
“$*"
将所有命令行参数视为单个字符串。等同于“$1 $2 .."。$IFS 的第一个字符用来作为分割符,以分割不同的值 来建立字符串。举例:
printf "The arguments were %s\n" "$*"

"$@"
将所有命令行参数视为单独的个体,也就是单独字符串。等同于 “$1" "$2" ...
这是将参数传递给其他程序的最佳方式,因为它会保留所有内嵌在每个参数里的任何空白。
lpr "$@" 显示每一个文件

  评论这张
 
阅读(114)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017