#!/bin/bash
nomFich="fichier.txt"
n=$(sort $nomFich | uniq | wc -l)
while read nom; do
read pren
read score
if [[ $score -gt 50 ]]; then
echo $nom
echo $pren
echo $score
fi
done < "StudentThatCompletedtheExam.txt"
字符串
我正在阅读nomFich文件中的行,该文件的结构如下:
mohamed
ali
90
ali
salem
95
paul
bens
46
型
我想一次读3行,这样我就可以存储所有变量,然后如果第三个变量score大于50,我就把所有3个变量放到另一个文件中。
问题是如果语句不起作用,它无法比较$score
和50
控制台输出:
$ ./test.sh
")syntax error: invalid arithmetic operator (error token is "
")syntax error: invalid arithmetic operator (error token is "
")syntax error: invalid arithmetic operator (error token is "
型
我试着把$score转换成int型,但是不行,我试了其他方法,我想这样做,因为对于初学者来说,理解起来很简单。
2条答案
按热度按时间yebdmbv41#
运行:
字符串
我认为这只是文件StudentThatCompletedtheExam.txt的问题,但我已经包括这两个文件只是以防万一。
这将解决问题的eol被dos格式化,然后脚本shoudl工作正确。我已经测试了它在我的系统上,并已能够复制的问题,修复工程。
c2e8gylq2#
使用工具可能比使用Bash更容易做到这一点。
下面是一个awk:
字符串
或者一个Ruby:
型
或者打印:
型
如果你有DOS行尾,你可以设置输入记录分隔符来过滤掉
\r
,如下所示:型
Ruby已经可以处理DOS或Unix的行尾,因为
\R
上的分割是通用的。