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