📅  最后修改于: 2023-12-03 14:58:58.144000             🧑  作者: Mango
${1##*[! ]}
在 Shell 脚本编程中,${1##*[! ]}
是一个常用的字符串截取操作,它会去掉变量 $1
开头的所有空格。下面详细介绍该操作符的使用。
${变量名##*[匹配项]}
其中,##
表示从左向右匹配删除(贪婪匹配),*[匹配项]
表示匹配所有的字符串,直到最后一个匹配项。具体匹配规则是:
*
:表示匹配任意长度的任意字符[匹配项]
:表示匹配匹配项之一的任意字符以上匹配规则可以组合使用,例如 *[0-9]
表示匹配任意长度的以数字结尾的字符串。
下面给出几个示例,演示 ${1##*[! ]}
操作符的应用。
#!/bin/bash
echo "With leading spaces: '${1}'"
echo "Without leading spaces: '${1##*[! ]}'"
运行结果如下:
$ ./remove-leading-spaces.sh " Hello World!"
With leading spaces: ' Hello World!'
Without leading spaces: 'Hello World!'
在上面的例子中,我们定义了一个 bash 脚本,输入的第一个参数可能包含前导空格。我们使用 ${1##*[! ]}
操作符去掉字符串中开头的所有空格,然后输出到控制台上。
*[! ]
匹配任何非空格的字符,直到遇到第一个空格为止##
表示从左向右贪婪匹配,即匹配尽可能多的空格最终得到的输出结果就是去掉前导空格的字符串。
${1##*[! ]}
是 Shell 常用的字符串截取操作符,它可以用于去掉字符串开头或结尾的空格或特定字符。在实际应用中,我们可以灵活运用该操作符,完成各种字符串处理操作。