• 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 定义为非空值。 (保留空值及非空值) 
    ${file:=my.file.txt} :若 $file 没设定或为空值,则使用my.file.txt 作默认值,同时将 $file 定义为非空值。 (保留非空值) 
    ${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 个字节
  • 相关阅读:
    leetcode 1301. 最大得分的路径数目
    LeetCode 1306 跳跃游戏 III Jump Game III
    LeetCode 1302. 层数最深叶子节点的和 Deepest Leaves Sum
    LeetCode 1300. 转变数组后最接近目标值的数组和 Sum of Mutated Array Closest to Target
    LeetCode 1299. 将每个元素替换为右侧最大元素 Replace Elements with Greatest Element on Right Side
    acwing 239. 奇偶游戏 并查集
    acwing 238. 银河英雄传说 并查集
    acwing 237程序自动分析 并查集
    算法问题实战策略 MATCHORDER 贪心
    Linux 安装Redis全过程日志
  • 原文地址:https://www.cnblogs.com/wangyongbin/p/4374916.html
Copyright © 2020-2023  润新知