BASH删除数组中的前导和尾随空格

问题描述 投票:0回答:1

我有来自mysql的数据,并且某些值带有前导或尾随空格。

这是我的代码:

IFS=$':' res=(${vals//$'\t'/:}) 

for (( i=0 ; i<${#res[@]} ; i++ )); do
    echo "$i: ${res[i]}*"
done

是否有一种简单有效的方法来确保res[i]中没有前导或尾随空格?

谢谢

arrays bash whitespace
1个回答
0
投票

不确定是否可以简单地使用它,但是可以使用sed:

echo "${res[i]}" | sed 's/^ *\| *$//g'

vals=$' a \t c d'
IFS=$':' res=(${vals//$'\t'/:})

for (( i=0 ; i<${#res[@]} ; i++ )); do
    echo X${res[i]}X
    res[$i]=$(echo "${res[i]}" | sed 's/^ *\| *$//g')
    echo X${res[i]}X
done

输出:

X a X
XaX
X c dX
Xc dX
© www.soinside.com 2019 - 2024. All rights reserved.