美文网首页
[转载] shell中的${},##和%%的使用

[转载] shell中的${},##和%%的使用

作者: NinthDay | 来源:发表于2016-07-16 10:21 被阅读75次

假设我们定义了一个变量为:
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

记忆的方法为:
#是 去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${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

利用${ } 还可针对不同的变数状态赋值(沒设定、空值、非空值):
${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。(非空值時不作处理)
${#var} 可计算出变量值的长度:

${#file} 可得到27 ,因为/dir1/dir2/dir3/my.file.txt 是27个字节

出处

相关文章

  • [转载] shell中的${},##和%%的使用

    假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得...

  • Shell中的${}、##和%%的使用

    假设我们定义了一个变量为:代码如下: file=/dir1/dir2/dir3/my.file.txt 可以用${...

  • Git

    Shell和vi shell 在计算机科学中,Shell俗称壳,用来区别于Kernel(核),是指“提供使用者使用...

  • shell echo 脚本颜色

    文章系转载原文地址文章系转载原文地址 shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数...

  • Shell环境变量

    bash shell中使用环境变量在内存中存储有关shell会话和工作环境的数据。以便程序或shell中运行的脚本...

  • Shell(二):变量、数据重定向和管道

    在上一篇博客Shell(一):功能、配置和插件中,介绍了为什么要使用shell,shell有哪些功能,如何使用oh...

  • shell中${}的使用

    在shell中经常要对变量进行字符串的截取操作,虽然截取字符串的方法很多,在这里用${}的方法操作变量应该是最简洁...

  • 01_SHELL编程前奏_小工具

    本节课程目标 了解shell中的通配符 熟悉grep、cut、sort等小工具和shell中的通配符的使用 一、文...

  • shell函数定义和引用

    shell脚本中函数的定义和使用 Bash(Bourne Again shell)跟其他编程语言一样也支持函数,一...

  • shell 中的$? 和 [[]]

    变量的含义说明: $? 最后运行的命令的结束代码(返回值) $* 所有参数列表。如"$*"用「"」括起来的情况、以...

网友评论

      本文标题:[转载] shell中的${},##和%%的使用

      本文链接:https://www.haomeiwen.com/subject/fqcujttx.html