2013-03-05 119 views

回答

0

如果你正在使用bash V4,然后这应该适合你。

FOO=${FOO:1:-1} 
+0

这是一个子字符串扩展。它只会从一端剥去一个字符 - 而不是所需的效果。如果你需要Bash 3,那么使用'$# - 1'而不是'-1'。 – ormaaj 2013-03-05 04:36:49

1
echo " ffs ff ssdf hfdh  hfghfghfgh hhgfg  " | sed -e 's/^ *//g' -e 's/ *$//g' 
0

回声$ FOO | sed's/^ * //'| SED的/ * $ //'

4

假设目标是要修改的变量(以降低便携的顺序排列):

# 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} 

像往常一样,这是不可能推荐一个最好的方法不知道这两个你从开始和结果你想做什么。

+2

唯一的真实(就shell编码而言)的答案。保持他们来! – 2013-03-05 09:10:02

相关问题