BASH - 简单地删除第一个字符和最后一个字符之前的空格

use*_*552 2 bash

只需删除第一个字符和最后一个字符之前的空格

FOO="   ffs ff ssdf hfdh     hfghfghfgh hhgfg      "

result
ffs ff ssdf hfdh     hfghfghfgh hhgfg
Run Code Online (Sandbox Code Playgroud)

谢谢

orm*_*aaj 5

假设目标是修改变量(按可移植性递减的顺序):

# POSIX
foo=${foo#"${foo%%[! ]*}"} foo=${foo%"${foo##*[! ]}"}

# Bash/ksh
${BASH_VERSION+'false'} || shopt -s extglob
foo=${foo##+( )} foo=${foo%%+( )}

# Bash4/ksh
IFS=' ' read -rd '' foo < <(printf %s "$foo")

# Bash4/ksh93
${KSH_VERSION+'false'} || typeset -n BASH_REMATCH=.sh.match
[[ $foo =~ ^\ *([! ].*[! ])\ *$ ]]
foo=${BASH_REMATCH[1]}

# ksh93
foo=${foo/~(K)*(\ )@([! ]*[! ])*(\ )/\2}
Run Code Online (Sandbox Code Playgroud)

像往常一样,如果不知道您的出发点和您想要对结果做什么,就不可能推荐最佳方法。

  • 唯一正确的(就 shell 编码而言)答案。让他们继续来! (2认同)