我必须替换来自shell脚本中数组中所有值的空白空格(")。因此,我需要制作这样的数组:
$ array[0]="one"
$ array[1]="two three"
$ array[2]="four five"
看起来像这样:
$ array[0]="one"
$ array[1]="two!three"
$ array[2]="four!five"
用循环或其他东西将每个空间替换为另一个字符,而不是按值更改值。
array=('one' 'two three' 'four five') # initial assignment
array=( "${array[@]// /_}" ) # perform expansion on all array members at once
printf '%sn' "${array[@]}" # print result
bash shell支持查找并通过替换来替换字符串操作操作。语法如下:
${varName//Pattern/Replacement}
用更换替换所有图案的匹配。
x=" This is a test "
## replace all spaces with * ####
echo "${x// /*}"
现在,您应该能够简单地循环穿过数组,然后更换任何您想要的空间。
$!/bin/sh
array=('one' 'two three' 'four five')
for i in "${!array[@]}"
do
array[$i]=${array[$i]/ /_}
done
echo ${array[@]}