zoukankan      html  css  js  c++  java
  • Shell中的${},##和%%的使用

    假设我们定义了一个变量为:
    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个字节
     
    转自:http://space.baidu.com.cn/ugo5/blog/item/c550bbc54d1644079c163dbd.html
  • 相关阅读:
    CSS3 target伪类简介
    不用position,让div垂直居中
    css3 在线编辑工具 连兼容都写好了
    a标签伪类的顺序
    oncopy和onpaste
    【leetcode】1523. Count Odd Numbers in an Interval Range
    【leetcode】1518. Water Bottles
    【leetcode】1514. Path with Maximum Probability
    【leetcode】1513. Number of Substrings With Only 1s
    【leetcode】1512. Number of Good Pairs
  • 原文地址:https://www.cnblogs.com/fjping0606/p/4573534.html
Copyright © 2011-2022 走看看