Substring命令忽略Shell脚本

时间:2018-04-06 14:36:39

标签: bash shell unix

我想要做的是从字符串中产生子串。但问题在于空间。

问题在于字符串中的空格。

当空格落在两个字符之间时,子字符串包含空格,但是当空格位于要提取的子字符串的开头时,则不包括空格。

下面的例子将解释它:

我正在使用" echo $ {string:position:length} "

INPUT:" vishal singh"

  
      
  1. 当position = 6且length = 4时;那么OUTPUT =" sin"
  2.   

忽略了这里的空间

  
      
  1. 当position = 5且length = 4时;那么OUTPUT =" l si"
  2.   

但不在这里

注意:我需要第一个例子中的空格。我是shell脚本的新手。

export LC_ALL=C
readarray -t ar
read pos
read len
l=${#ar}
if [ "$l" -gt 100 ] || [ "$l" -lt 1 ]
then
 exit
fi
for index in ${!ar[@]}
do 
 echo ${ar[index]:$pos:$len} 
done

1 个答案:

答案 0 :(得分:3)

双引用你需要保留空格的表达式。

echo "${ar[index]:$pos:$len}"

否则,将单词拆分应用于删除空格的参数扩展。请参阅man bash中的 Word Splitting (强调我的):

  

shell扫描参数扩展,命令替换和结果          用于分词的双引号内未发生的算术扩展。