我正在做一項任務,要求使用/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