如何解读${x%,*}和${x#*,}的含义

How to interpret the meaning of ${x%,*} and ${x#*,}

问题表述:

假设我有一个名为 pairs.tsv 的文件,其中每一行都包含一对逗号分隔的文件路径:

% cat pairs.tsv  
path1,path2  
path3,path4

以下代码遍历每一行并在出现 comma 的地方拆分它,然后回显拆分的每个结果。

for line in $(cat pairs.tsv); do  
echo ${line%,*}  
echo ${line#*,}
% returns:
path1
path2
path3
path4

我想知道这${x%,*}${x#*,}背后的含义;特别是 %,*#*, 部分。我知道他们做什么,但我不知道他们是怎么做的!还有这些特殊字符叫什么!

我之所以有兴趣了解这是怎么回事,是为了能够在其他情况下复制相同的逻辑。因此,非常感谢任何类型的提示。

提前致谢! :)

  • ${x%,*}
    • 从字符串 $xend 开始,删除 last 逗号和任何后续字符
  • ${x%%,*}
    • 从字符串 $xend 开始,删除 first 逗号和任何后续字符
  • ${x#*,}
    • 从字符串 $x 开头 开始,删除直到并包括 第一个 逗号 [=50= 的字符]
  • ${x##*,}
    • 从字符串 $x 开头 开始,删除直到并包括 last 逗号 [=50= 的字符]

我使用这些技巧来记住差异:

  • 在我的美式键盘上,#%
  • 之前
  • ###
  • 更贪婪