作者jubel (木亟缶夬金戔)
看板LinuxDev
標題[問題] 用sh讀一個文字檔會有錯誤
時間Wed Apr 13 10:08:13 2016
幫朋友發問的
我用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
→ kerwinhui: 用bash就不要用sh呼叫… 04/13 10:36
→ kerwinhui: 另外,有手動改過 /etc/shadow 或 /etc/passwd 嗎? 04/13 10:37
直接下 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
→ kerwinhui: 如果是用 sudo -- "password -l $var" 呢? 04/13 13:01
→ kerwinhui: passwd 不是 password 04/13 13:02
推 yvb: 猜測輸入檔為DOS格式. while前加一列 IFS=$' \t\r\n' 試試. 04/13 15:02
輸入檔為linux格式
不過加了這行就能用了
謝謝
※ 編輯: jubel (111.254.69.139), 04/13/2016 15:07:53
推 yvb: 請先 file 一下該檔, CRLF 換行是DOS格式, CR換行是MAC格式. 04/13 15:10