开发者

Concatenate strings in bash

I have in a bash script:

for i in `seq 1 10`
do
   read AA BB CC <<< $(cat file1 |  grep DATA)
   echo ${i}
   echo ${CC}
   SORT=${CC}${i}
   echo ${SORT}
done

so "i" is a integer, and CC is a string like "TODAY"

I would like to get then in SORT, "TODAY1", etc

But I get开发者_开发问答 "1ODAY", "2ODAY" and so

Where is the error?

Thanks


You should try

SORT="${CC}${i}"

Make sure your file does not contain "\r" that would end just in the end of $CC. This could well explain why you get "1ODAY".

Try including |tr '\r' '' after the cat command


try

   for i in {1..10}
    do
      while read -r line
      do
        case "$line" in
         *DATA* ) 
             set -- $line
             CC=$3
             SORT=${CC}${i}
             echo ${SORT}
        esac
      done <"file1" 
    done

Otherwise, show an example of file1 and your desired output


ghostdog is right: with the -r option, read avoids succumbing to potential horrors, like CRLFs. Using arrays makes the -r option more pleasant:

for i in `seq 1 10`
do
   read -ra line <<< $(cat file1 |  grep DATA)
   CC="${line[3]}"
   echo ${i}
   echo ${CC}
   SORT=${CC}${i}
   echo ${SORT}
done
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜