在Bash脚本中传递输入给多个命令

3

我希望自动设置用户的密码。例如,我想为非root用户设置一个在脚本中存储的值作为密码。

我正在进行以下操作:

echo $input | passwd $user

然而,它失败了,因为会提示重新输入新密码。
我尝试了:
echo $input | passwd $user
echo $input | Retype New Password:

没有成功。它说密码更改被中止。我该怎么做?调用重输新密码会触发另一个shell进程吗?

1个回答

4

只需插入换行符:

echo $input$'\n'$input | passwd $user

或者使用echo -e
echo -e "$input\n$input" | passwd $user

谢谢@Ben Grimm。非常有效。你能解释一下为什么换行符起作用吗? - as3rdaccount
将文本“echo”发送到进程的STDIN,实际上就像在键入,并且回车键会产生“\n”。 - Ben Grimm
@brotherofmysister 如果答案对你有用,你应该接受它。 - user4516901
抱歉离线了一个小时 :) 感谢 @ Ben Grimm - as3rdaccount

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接