Bash Trim 函数

Bash Trim 函数

我试图了解以下 bash 脚本如何运行

trim_string() {
    # Usage: trim_string " example string "
    : "${1#"${1%%[![:space:]]*}"}"
    : "${_%"${_##*[![:space:]]}"}"
    printf '%s\n' "$_"
}

我认为:作为无操作运行,但这就是我所得到的。

提前致谢

答案1

:确实是无操作的,因为它不执行任何操作,但它仍然是一个命令(它等同于true)。因此,它仍然会修改依赖于最后一个运行命令的 shell 变量,例如众所周知的$?(最后一个命令的返回状态)或不太为人所知的$_(最后一个命令的最后一个参数)。

这里用来修改$_

  • 第一个用法修剪左侧的空格。它首先通过删除第一个非空格字符 ( ${1%%[![:space:]]*}) 后的所有字符来获取左侧的所有空格,然后从变量左侧删除这些空格并将结果传递给:(不执行任何操作,但设置为删除左侧空格后$_的内容)$1
  • 第二次使用类似的技术修剪右侧的空格(找到右侧的所有空格,然后将其删除)

最后一行只是打印结果变量,后面跟着换行符。

相关内容