我试图了解以下 bash 脚本是如何运行的
trim_string() {
# Usage: trim_string " example string "
: "${1#"${1%%[![:space:]]*}"}"
: "${_%"${_##*[![:space:]]}"}"
printf '%s\n' "$_"
}
Run Code Online (Sandbox Code Playgroud)
我认为 : 作为无操作运行,但据我所知。
提前致谢
:确实是一个无操作,因为它不执行任何操作,但它仍然是一个命令(它相当于true)。因此,它仍然会修改依赖于最后运行命令的 shell 变量,例如众所周知的$?(最后一个命令的返回状态)或不太为人所知的$_(最后一个命令的最后一个参数)。
这里用来修改$_:
${1%%[![:space:]]*}) 之后的所有字符来获取左侧的所有空格,然后删除变量左侧的这些空格并将结果传递给:(不执行任何操作,但将with space$_的内容设置为$1左侧已移除)最后一行仅打印结果变量,后跟换行符。
| 归档时间: |
|
| 查看次数: |
1230 次 |
| 最近记录: |