我知道这个问题在这里被问过很多次,我已经阅读了所有答案。他们都很相似,我尝试了各种各样的变化,但似乎没有什么工作正常。 这是我的脚本文件:
#!/bin/bash
names=` cut -d" " -f1-3 $1 `
if [[ "$names" =~ ^[-a-zA-Z]+$ ]] ; then
echo names are ok
else
echo bad names in file
fi
合法名称是仅包含a-z A-Z或“ - ”
的名称$ 1是文件的名称,这就是它的内容:
olga geller haifa 56 43
sharon langer haifa 89 31
我基本上取了所有的名字(用cut命令)并将它们变成1个字符串 - >名 虽然所有名称都有效,但文件的这种变化给了我“文件中的错误名称”。 如果我把某个数字放在某个地方就会打印相同的数字。 如果我把'!'在[[]]内或“if”之后,它仍然无效。它只是为有效和无效的名称打印“名称正常”。 那么我的错误在哪里?
答案 0 :(得分:2)
带有名称的字符串由换行符分隔,因此您必须搜索它们或每行read
并单独测试它们以进行匹配。