成像我正在执行以下命令:
echo "root:mypass" | chpasswd
如何获取 chpasswd 返回的返回码/错误码?在这种情况下这可能吗?我试过
RET = `echo "root:mypass" | chpasswd`
但这只给了我“找不到命令”?
答案1
美元?变量保存最后一个命令的返回值。你可以这样做:
echo "root:passwd" | chpasswd
RET=$?
或者直接测试,例如
echo "root:passwd" | chpasswd
if [ "$?" -ne 0 ]; then
echo "Failed"
fi
答案2
如果返回值不重要,只要成功与否,您可以在语句中使用该命令if
:
if ! echo "root:mypass" | chpasswd; then
# chpasswd failed
fi
或者较短的一个:
echo "root:mypass" | chpasswd || cmd_to_run_if_chpasswd_failed
答案3
如果我理解正确的话,您将尝试仅使用语句并按 Enter 键来更改 root 用户的密码,而无需进一步确认该过程。
我发现如果您添加“sudo su”前缀,您的语句可以正常运行。
~$ sudo su
考虑到您正在尝试更改 root 用户的密码,您必须知道 root 用户名是什么并正确登录。您可以使用须藤苏命令。
然后运行以下命令就足够了,将“root”替换为当前的 root 用户名,将“my pass”替换为该用户所需的密码(请记住尝试此方法时请记下):
~$ echo "root:mypass" | chpasswd
在您可以探测输入后出口命令和登录使用新密码的命令。