pwd="123456"
passwd root <<EOF
$pwd
$pwd
EOF
我这样写,发现 EOF 中,不认我这个变量,想问下,这个在 shell 中应该怎么实现
pwd="123456"
passwd root <<EOF
$pwd
$pwd
EOF
我这样写,发现 EOF 中,不认我这个变量,想问下,这个在 shell 中应该怎么实现
|
hsfzxjyMar 9, 2022 via Android
1
是可以的,有没什么报错
|
|
xuboyingMar 9, 2022
3
这个东西叫“here doc”,搜一下就有详细教程了
|
|
thedrwuMar 9, 2022 via Android
4
认,但是 passwd 是否直接从 stdin 读或者读之前会不会 flush 又是另一个问题
|
|
swullingMar 9, 2022
5
|
|
swullingMar 9, 2022
6
你这个问题是 passwd ,建议这么用
echo "NEWPASSWORD" | passwd --stdin root passwd 支持从标准输入读取 |
|
bufbzMar 9, 2022
7
cat > ~/.pip/pip.conf << 'EOF'
[global] index-url = http://mirrors.aliyun.com/pypi/simple [install] trusted-host=mirrors.aliyun.com EOF EOF 加单引号即可。 |
|
bufbzMar 9, 2022
8
看错了,这个是去变量,默认就是可以调用变量。
|
|
hsfzxjyMar 9, 2022 via Android
9
|
|
haoliangMar 9, 2022
10
`yes $pwd | passwd root`
|
|
fuxkcsdnMar 9, 2022
11
#10 正解,一般需要输入密码的地方都是用 yes 命令
|
|
iqfEmhuNidBhDfWoMar 9, 2022
12
楼主这情景和我上一帖一样啊~
①heredoc 默认就是会解释变量的 ②如果想不解释变量,可以在该字符串前加反斜杠转义,或者使用一对单引号闭合第一个 endpoint keyword (大家都习惯使用 EOF ) ③回到楼主的操作上来,不管是"</path/to/file"表示标准输入重定向自文件,还是"<<keyword"表示标准输入重定向自 heredoc ,passwd 默认都不吃这一套,所以你需要加上楼上所说得--stdin 可选项 ④另外顺便一说,楼主这需求也可以拿 expect 或者 socat 来实现 |
|
mhycyMar 10, 2022
13
修改密码的操作有文档建议使用的命令是 chpasswd
|
|
AlliotMar 10, 2022
14
passwd 有参数直接读取标准输入面交互 :
``` shell echo 'xxx' | passwd --stdin user ``` |