Unix Shell ${ }的用法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
${ }的用法 假设我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 我们可以用 ${ } 分別替换获得不同的值: ${file#*/}:拿掉第一条 / 及其左边的字串:dir1/dir2/dir3/my.file.txt ${file##*/}:拿掉最后一条 / 及其左边的字串:my.file.txt ${file#*.}:拿掉第一个 . 及其左边的字串:file.txt ${file##*.}:拿掉最后一个 . 及其左边的字串:txt ${file%/*}:拿掉最后一条 / 及其右边的字串:/dir1/dir2/dir3 ${file%%/*}:拿掉第一条 / 及其右边的字串: (空啦) ${file%.*}:拿掉最后一个 . 及其右边的字串:/dir1/dir2/dir3/my.file ${file%%.*}:拿掉第一个 . 及其右边的字串:/dir1/dir2/dir3/my 记忆的方法为: # 是去掉左边的字符;在键盘上 # 在 $ 之左边; % 是去掉右边的字符;在键盘上 % 在 $ 之右边; 单一符号是最小匹配﹔两个符号是最大匹配。 PS:${file#/}(不加*号)表示只去掉最左边的一个“/” +++其实上面的语法,不只可以处理 . 和 / ,而是可以处理任意字符。勤奋的朋友可以自己编一个string=daabbababac,处理一下试试──binbindatou注+++ ${file:0:5}:提取最左边的 5 个字符:/dir1 ${file:5:5}:提取第 5 个字符右边的连续 5 个字符:/dir2 我们也可以对变量值里的字串作替换: ${file/dir/path}:将第一個 dir 提换为 path:/path1/dir2/dir3/my.file.txt ${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt +++这个语法跟vim里的替换语法相似,unix工具都是”相通“的──binbindatou注+++ 利用 ${ } 还可针对不同的变数状态赋值(未设定、空值、非空值): ${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作返回值。(空值及非空值时不作处理) ${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作返回值。 (非空值时不作处理) ${file+my.file.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作返回值。(没有设定时不作处理) ${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作返回值。 (没设定及空值时不作处理) ${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作返回值,同时将 $file 赋值为 my.file.txt 。 (空值及非空值时不作处理) ${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作返回值,同时将 $file 赋值为 my.file.txt 。 (非空值时不作处理) ${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。 (空值及非空值时不作处理) ${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。 (非空值时不作处理) tips: 以上的理解在于, 你一定要分清楚 unset 与 null 及 non-null 这三种赋值状态. 一般而言, : 与 null 有关, 若不带 : 的话, null 不受影响, 若带 : 则连 null 也受影响. 还有哦,${#var} 可计算出变量值的长度: ${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字符... 接下来,再为大家介绍一下 bash 的数组(array)处理方法。 一般而言,A=a b c def 这样的变量只是将 $A 替换为一个单一的字符串, 但是改为 A=(a b c def) ,则是将 $A 定义为数组... bash 的数组替换方法可参考如下方法: ${A[@]} 或 ${A[*]} 可得到 a b c def (全部元素) ${A[0]} 可得到 a (第一个元素),${A[1]} 则为第二个元素... ${#A[@]} 或 ${#A[*]} 可得到

文档评论(0)

80092355km + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档