我正在做一项任务,要求使用/etc
中的passwd
文件在文件中搜索用户。字符串比较和if语句
我能够做到这一点,但是当它找不到特定用户时,它不会回复我用过的打印命令。
这里是我的代码:
#!/usr/bin/perl
$file = '/etc/passwd.bak'
open (FILE, $file) or die "Error in reading file. Program will close";
while (<FILE>) {
chomp;
@field = split (':', $_);
if ($ARGV[0] eq $field[0]) {
print "User ID: $field[2]\n" ;
print "Home Directory: $field[5]\n";
}
elsif (@ARGV[0] ~= $field[0] {
print "User: $ARGV[0] does not exist.\n"
}
elsif ((@ARGV > 1 || @ARGV == 0)) {
print "Please enter one argument only.\n";
exit 0;
}
}
我试图交换!=
为ne
,但是当我做,它说,每一个参数没有找到,即使我知道它的存在。
我试图在我的书中看,并没有运气在网上研究它。
'@ARGV [0]'不会工作,因为'ARGV [0]'是标量,而不是一个数组。您可能是指您在第一次检查时使用的“$ ARGV [0]”。另外,你似乎在'$ field [0]'后面缺少一个关闭的元素。考虑在脚本的顶部添加'使用警告'。 –
我会试试,谢谢 – user4839691
你是否清楚'while(){...}'会为文件中的每一行执行一次块? –
Borodin