我陷入了一个非常简单的问题(绝对肯定当解决方案出现时我会感觉到一个假人)。我需要在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或者是case。在Ubuntu 12.04工作
脚本输出:
paco@NIMBUS:~/temp$ cat flag.txt
S
paco@NIMBUS:~/temp$ ./prova2
FLAG = S
Not getting the right string??
提前感谢您的帮助,如果这是一个愚蠢的问题,请抱歉。
答案 0 :(得分:2)
文件flag.txt
似乎有CRLF行结尾。执行以下操作并确定:
$ awk '{ print $1 }' flag.txt | od
这很可能会回归:
0000000 006523 000012
0000003
然而它本应该返回:
0000000 005123
0000002
从输入文件中删除\r
,脚本将按预期工作。