美文网首页
shell中的${},##, %% , :- ,:+, ? 的使

shell中的${},##, %% , :- ,:+, ? 的使

作者: 伏牛山忍者 | 来源:发表于2019-01-05 14:21 被阅读11次

转载

假设我们定义了一个变量为:

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脚本设置hive查询语句中的变量

    在shell脚本中设置的变量,可以通过hive -e直接使用,例如: 方法总结为: 在shell脚本中添加变量 使...

  • shell 脚本

    shell:一般是指命令行工具shell脚本:把shell 指令写到一个文件中,使文件自动执行 例如:zsh 12...

  • PySpark NoteBook-10. Execute a P

    运行以下命令: 在PySpark Shell中,PySpark自己创建了SparkContext作为sc的对象,使...

  • Shell -X命令

    shell "-x"选项可用来跟踪脚本的执行,是调试shell脚本的强有力工具。“-x”选项使shell在执行脚本...

  • Linux 工具:点的含义

    Paul Brown 解释了 Linux shell 命令中那个不起眼的“点”的各种意思和用法。 在现实情况中,使...

  • shell脚本语言

    Shell脚本语言 1.开始 2.运行 Shell 脚本的两种方法: 3.Shell变量 3.1定义变量 3.2使...

  • shell中的(),(()),{},=,==,[],[[]],$

    有时间要好好整理下 shell中的(),(()),{},=,==,[],[[]]几种语法用法 - 码农崛起 - C...

  • shell编程二

    目录 一、shell中的函数二、shell中的数组三、shell告警系统 一、shell中的函数 函数就是把一段代...

  • 第三章-Linux基本命令操作

    本节所讲内容: 3.1 Linux中断介绍Shell提示符 Bash Shell基本语法 3.2 基本命令的使...

网友评论

      本文标题:shell中的${},##, %% , :- ,:+, ? 的使

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