美文网首页VimShell技术流派
Shell中的${}、##和%%的使用

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

作者: KevinCool | 来源:发表于2016-05-12 23:32 被阅读189次

假设我们定义了一个变量为:
代码如下:

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环境变量

    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 中 if 语句的使用

    基本用法 Shell 的 if 语法 和 C 语言等高级语言非常相似,唯一需要注意的地方就是 Shell 的 if...

网友评论

    本文标题:Shell中的${}、##和%%的使用

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