在bash中连接字符串

时间:2010-03-04 13:25:26

标签: bash

我有一个bash脚本:

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

所以“i”是一个整数,CC是一个像“TODAY”

的字符串

我想进入SORT,“TODAY1”等

但我得到“1ODAY”,“2ODAY”等等。

错误在哪里?

由于

3 个答案:

答案 0 :(得分:7)

你应该试试

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

确保您的文件不包含将在$ CC结尾处结束的“\ r \ n”。 这很好地解释了为什么你会得到“1ODAY”。

尝试包括   | tr'\ r''' 在cat命令之后

答案 1 :(得分:1)

   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

否则,显示file1和所需输出的示例

答案 2 :(得分:1)

ghostdog是对的:使用-r选项,读取可以避免屈服于潜在的恐怖行为,如CRLF。使用数组使-r选项更加愉快:

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