Bash Shell:根据输入变量修剪前导空白

时间:2020-01-09 10:42:23  来源:igfitidea点击:

我的脚本依靠$1来执行某些操作:

file=  echo |${file}|

但是, 有时候会有空格,导致成这样:

| file1.txt |

如何从一个输入变量中删除前导空白?

shell中如何删除字符串前后的空格?
shell有没有类似trim功能?

有很多方法可以从输入变量中删除前导空格。
最简单的一种使用read命令,如下所示:

var="    output.txt"
echo "|$var|"

输出示例:

|    output.txt|

使用read命令消除空白:

read  -rd '' var <<< "$var"
echo "|$var|"

输出示例:

|output.txt|

extglob

您还可以使用extglob shell选项(Bash v2.2 +)打开或者关闭扩展模式匹配功能。

var="         output.txt"
shopt -q -s extglob
echo "|${var##+([[:space:]])}|"
shopt -q -u extglob

您可以将结果存储到var本身:

var="${var##+([[:space:]])}"
echo "|${var}|"

上面的语法也适用于ksh shell。

sed命令

您还可以使用sed:

var="      output.txt"
var=$(sed -e 's/^[[:space:]]*//' <<<"$var")
echo "|${var}|"