shell脚本参数扩展问题
时间:2011-08-25
来源:互联网
属于大括号{}的一个用法,我先把{}的用法贴出来.
{} 大括号:
用法一:通配符扩展 eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合: ls my_fingers my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们将得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data,userC-home, userC-bin, userC-data,这几个目录
用法二:可用于语句块的构造,语句之间用回车隔开。如果你想在某些使用单个语句的地方(比如在AND或OR列表中)使用多条语句,你可以把它们括在花括号{}中来构造一个语句块。eg: { grep -v "$cdcatnum" $strack_file > $temp_file cat $temp_file > $strack_file echo cat -n file1 } (注:以上大括号中的四句命令够成了一个语句块)
用法三:参数扩展
${name:-default} 使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量name;
${name:=default}使用指定值来代替空的或者没有赋值的变量name;
${name:?message}如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。
${#name} 给出name的长度
${name%word} 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分
${name%%word} 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分
${name#word} 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分
${name##word} 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分(注,name为变量名,word为要匹配的字符串) 用法三在处理字符串和未知变量时,是很有用的。
现在问题是不明白用法三...如果是固定用法,请高手给出参数扩展的全部用法句式(我只找到了这7个),尽快解决为谢.!!
{} 大括号:
用法一:通配符扩展 eg: ls my_{finger,toe}s 这条命令相当于如下命令的组合: ls my_fingers my_toes eg: mkdir {userA,userB,userC}-{home,bin,data} 我们将得到 userA-home, userA-bin, userA-data, userB-home, userB-bin,userB-data,userC-home, userC-bin, userC-data,这几个目录
用法二:可用于语句块的构造,语句之间用回车隔开。如果你想在某些使用单个语句的地方(比如在AND或OR列表中)使用多条语句,你可以把它们括在花括号{}中来构造一个语句块。eg: { grep -v "$cdcatnum" $strack_file > $temp_file cat $temp_file > $strack_file echo cat -n file1 } (注:以上大括号中的四句命令够成了一个语句块)
用法三:参数扩展
${name:-default} 使用一个默认值(一般是空值)来代替那些空的或者没有赋值的变量name;
${name:=default}使用指定值来代替空的或者没有赋值的变量name;
${name:?message}如果变量为空或者未赋值,那么就会显示出错误信息并中止脚本的执行同时返回退出码1。
${#name} 给出name的长度
${name%word} 从name的尾部开始删除与word匹配的最小部分,然后返回剩余部分
${name%%word} 从name的尾部开始删除与word匹配的最长部分,然后返回剩余部分
${name#word} 从name的头部开始删除与word匹配的最小部分,然后返回剩余部分
${name##word} 从name的头部开始删除与word匹配的最长部分,然后返回剩余部分(注,name为变量名,word为要匹配的字符串) 用法三在处理字符串和未知变量时,是很有用的。
现在问题是不明白用法三...如果是固定用法,请高手给出参数扩展的全部用法句式(我只找到了这7个),尽快解决为谢.!!
作者: 懒惰的人 发布时间: 2011-08-25
爱好linux爱好shell的前辈可以加群50054998交流,环境比较好!!! 进来请遵守群规...菜鸟爱学的好友也热烈欢迎加入..
作者: 懒惰的人 发布时间: 2011-08-25
路过
作者: glsow 发布时间: 2011-08-26
${name-word}
${name:-word}
${name+word}
${name:+word}
${name=word}
${name:=word}
${name?word}
${name:?word}
${!name*}
${!name@}
${name/word/word2} 替换最小匹配
${name//word/word2} 替换最大匹配
更多用法请参考man bash
在man bash中搜索Parameter Expansion
${name:-word}
${name+word}
${name:+word}
${name=word}
${name:=word}
${name?word}
${name:?word}
${!name*}
${!name@}
${name/word/word2} 替换最小匹配
${name//word/word2} 替换最大匹配
更多用法请参考man bash
在man bash中搜索Parameter Expansion
作者: yanyongkg 发布时间: 2011-08-26

作者: lei432378yu 发布时间: 2011-09-01
参考我的博客
作者: huangyandong 发布时间: 2011-10-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28