Docs/linux基础/shell中##与%%的用法.txt
2022-10-18 16:59:37 +08:00

21 lines
No EOL
1.2 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

假设定义了一个变量为:
代码如下:
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