[問題] 用sh讀一個文字檔會有錯誤

看板LinuxDev作者 (木亟缶夬金戔)時間9年前 (2016/04/13 10:08), 9年前編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
幫朋友發問的 我用sh讀一個文字檔的內容,裏面是e-mail帳號,然後用 passwd去停用e-mail的登入密碼,以下程式會有error,該如何修改? #!/bin/bash filename="/var/www/html/lock_mail" exec < $filename while read var do sudo passwd -l $var done sudo passwd -l testjen sudo passwd -l testjen1 sudo passwd -l testjen2 錯誤訊息如下: '.sswd: Unknown user name 'testjen '.sswd: Unknown user name 'testjen1 '.sswd: Unknown user name 'testjen2 Locking password for user testjen. passwd: Success Locking password for user testjen1. passwd: Success Locking password for user testjen2. passwd: Success 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.254.69.139 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1460513297.A.B85.html

04/13 10:36, , 1F
用bash就不要用sh呼叫…
04/13 10:36, 1F

04/13 10:37, , 2F
另外,有手動改過 /etc/shadow 或 /etc/passwd 嗎?
04/13 10:37, 2F
直接下 sudo passwd -l testjen 是ok的,但帶變數去改,就會有error #!/bin/bash filename="/var/www/html/lock_mail" exec < $filename while read var do sudo passwd -l $var #執行error,確定有testjen這帳號 sudo passwd -l testjen #執行正常 done

04/13 13:01, , 3F
如果是用 sudo -- "password -l $var" 呢?
04/13 13:01, 3F

04/13 13:02, , 4F
passwd 不是 password
04/13 13:02, 4F

04/13 15:02, , 5F
猜測輸入檔為DOS格式. while前加一列 IFS=$' \t\r\n' 試試.
04/13 15:02, 5F
輸入檔為linux格式 不過加了這行就能用了 謝謝 ※ 編輯: jubel (111.254.69.139), 04/13/2016 15:07:53

04/13 15:10, , 6F
請先 file 一下該檔, CRLF 換行是DOS格式, CR換行是MAC格式.
04/13 15:10, 6F

文章代碼(AID): #1N3QeHk5 (LinuxDev)
文章代碼(AID): #1N3QeHk5 (LinuxDev)