我试图了解以下 bash 脚本如何运行
trim_string() {
# Usage: trim_string " example string "
: "${1#"${1%%[![:space:]]*}"}"
: "${_%"${_##*[![:space:]]}"}"
printf '%s\n' "$_"
}
我认为:作为无操作运行,但这就是我所得到的。
提前致谢
答案1
:
确实是无操作的,因为它不执行任何操作,但它仍然是一个命令(它等同于true
)。因此,它仍然会修改依赖于最后一个运行命令的 shell 变量,例如众所周知的$?
(最后一个命令的返回状态)或不太为人所知的$_
(最后一个命令的最后一个参数)。
这里用来修改$_
:
- 第一个用法修剪左侧的空格。它首先通过删除第一个非空格字符 (
${1%%[![:space:]]*}
) 后的所有字符来获取左侧的所有空格,然后从变量左侧删除这些空格并将结果传递给:
(不执行任何操作,但设置为删除左侧空格后$_
的内容)$1
- 第二次使用类似的技术修剪右侧的空格(找到右侧的所有空格,然后将其删除)
最后一行只是打印结果变量,后面跟着换行符。