【发布时间】:2013-10-18 20:59:21
【问题描述】:
我想从字符串中提取一个数字并将该数字用于以后的计算
while IFS= read line ; do
if [[ "$line" == Content-Length* ]]
then
size=$(echo "$line" | awk '{print $2}')
echo "$size"
let size=$size+1
echo "$size"
break
fi
done <files
文件有一行
Content-Length: 4806
但输出看起来像这样
4806
+1")syntax error: invalid arithmetic operator (error token is "
4806
我尝试了超过 5 小时,但找到了为什么会发生这种情况。有人可以告诉我原因
【问题讨论】:
-
我运行了你的脚本,它运行良好。
-
您正在解析的文件具有 DOS 行结尾,这导致
$line以回车符 (\r) 结尾。这个回车以size的值结束,let语句阻塞了它。请注意奇怪的错误,$size后面的文本出现在错误消息的开头,而不是结尾。实际的错误令牌是4806\r+1。 -
Thanq @chepner 但你能告诉我如何解决这个问题
-
(对我之前的评论稍作修正,错误标记是
\r+1。来不及编辑评论)。