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