我正在尝试使用for循环运行以下代码,但我收到语法错误。请帮忙。
输入格式: 输入的第一行包含一个整数N,表示整数的数量。下一行包含N个以空格分隔的整数,这些整数形成数组A.
read n
sum=0
for (( i=1; i<= "$n" ; i++ ))
do
read val
sum ^= $val;
done
echo $sum
以下是错误消息
solution.sh: line 4: ((: i<= 1
: syntax error: invalid arithmetic operator (error token is "
")
答案 0 :(得分:1)
printf "%s" "$n" | hexdump -C
显示CR包含在输入中而不是脚本文件中,因此在脚本上运行dos2unix
无论如何都不会有帮助。摆脱它的一个简单方法是设置IFS=$'\r'
然后,循环中的read val
不适合读取空格分隔的整数,因为read
一次读取整行。但是对于按位排除ORing那些 N个空格分隔的整数的任务,我们不需要显式循环 - 我们可以用所需的运算符替换所有空格并评估结果。
#!/bin/bash
IFS=$'\r'
read n
read a
((sum = ${a// /^}))
echo $sum
答案 1 :(得分:0)
这会奏效。但是你应该在里面输入一些帮助信息:
#!/bin/bash
read n
sum=0
for (( i=1; i<=n; i++ ))
do
read val
((sum^=val))
done
echo $sum