0

我陷入了一个非常简单的问题(绝对肯定,当解决方案出现时我会感到很傻)。我需要读取 bash 脚本中的字符串并根据字符串值继续。这段代码现在不起作用

k=`awk '{ print $1 }' flag.txt`

echo "FLAG = "$k

case "$k" in
     "S") echo " Yes it worked - Flag = " $k ;;
     "N") echo " NOOOOOOOOOOOO - Flag = " $k ;;
     *) echo "Not getting the right string??" ;;
esac

字符串值是正确的,因为 echo 命令显示正确的值,flag.txt 只包含“S”或“N”(在这种情况下为 N)。绝对卡在这里,无法弄清楚出了什么问题,awk或大小写。在 Ubuntu 12.04 中工作

脚本输出:

paco@NIMBUS:~/temp$ cat flag.txt 
S
paco@NIMBUS:~/temp$ ./prova2
FLAG = S
Not getting the right string??

提前感谢您的帮助,如果这是一个愚蠢的问题,我们深表歉意。

4

1 回答 1

2

该文件似乎flag.txt具有 CRLF 行结尾。执行以下操作,您可以确定:

$ awk '{ print $1 }' flag.txt | od

这很可能会返回:

0000000 006523 000012
0000003

而它应该返回:

0000000 005123
0000002

从输入文件中删除,\r脚本将按预期工作。

于 2013-07-23T14:31:21.900 回答