我有一个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”等等。
错误在哪里?
由于
答案 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