for 循环总是每行显示一个单词而不是显示我想要的
for loop always displays a word per line instead of displaying what I want
#!/bin/bash
message="This message is so freaking long that I have to split it into two or more messages"
split=${#message}
array=( ${message:0:5} ${message:5:5} ${message:10:5} ${message:15:5} ${message:20:5})
for i in "${array[@]}"
do
echo "send me a message with \"$i\""
done
输出是这样的:
send me a message with "This"
send me a message with "messa"
send me a message with "ge"
send me a message with "is"
send me a message with "so"
send me a message with "f"
send me a message with "reaki"
但我不想要那样,我想要这样:
send me a message with "This "
send me a message with "messa"
send me a message with "ge is"
send me a message with "so fr"
send me a message with "eakin"
send me a message with "g lon"
send me a message with "g tha"
我该如何解决?我已经用谷歌搜索了,但我仍然无法让它像我想要的那样工作,我不知道 for loop
是不正确的还是 ${message:x:x}
不正确。
请多引用!
$ array=( "${message:0:5}" "${message:5:5}" "${message:10 :5}" "${message:15:5}" "${message:20:5}" )
$ for i in "${array[@]}"
> do
> echo "send me a message with \"$i\""
> done
send me a message with "This "
send me a message with "messa"
send me a message with "ge is"
send me a message with " so f"
send me a message with "reaki"
单词中的空格导致它们在数组中被视为单独的元素,这导致了您观察到的行为。用双引号将每个元素括起来可防止发生此单词拆分。
#!/bin/bash
message="This message is so freaking long that I have to split it into two or more messages"
split=${#message}
array=( ${message:0:5} ${message:5:5} ${message:10:5} ${message:15:5} ${message:20:5})
for i in "${array[@]}"
do
echo "send me a message with \"$i\""
done
输出是这样的:
send me a message with "This"
send me a message with "messa"
send me a message with "ge"
send me a message with "is"
send me a message with "so"
send me a message with "f"
send me a message with "reaki"
但我不想要那样,我想要这样:
send me a message with "This "
send me a message with "messa"
send me a message with "ge is"
send me a message with "so fr"
send me a message with "eakin"
send me a message with "g lon"
send me a message with "g tha"
我该如何解决?我已经用谷歌搜索了,但我仍然无法让它像我想要的那样工作,我不知道 for loop
是不正确的还是 ${message:x:x}
不正确。
请多引用!
$ array=( "${message:0:5}" "${message:5:5}" "${message:10 :5}" "${message:15:5}" "${message:20:5}" )
$ for i in "${array[@]}"
> do
> echo "send me a message with \"$i\""
> done
send me a message with "This "
send me a message with "messa"
send me a message with "ge is"
send me a message with " so f"
send me a message with "reaki"
单词中的空格导致它们在数组中被视为单独的元素,这导致了您观察到的行为。用双引号将每个元素括起来可防止发生此单词拆分。