格式1:
(echo 123;echo 123) | smbpasswd -a -s user1
格式2:
echo -e "123\n123" | smbpasswd -a -s user1
smbpasswd -s参数
先看一下smbpasswd的man手册中针对-s参数的说明:
-s This option causes smbpasswd to be silent (i.e. not issue prompts) and to read its old and new passwords from
standard input, rather than from /dev/tty (like the passwd(1) program does). This option is to aid people
writing scripts to drive smbpasswd
其大致意思是,如果使用-s参数,则smbpasswd会通过标注输入(stdin)来读取需要的密码,而没有该参数时,则通过当前的TTY读取用户输入。因为在之前通过echo或printf已经在stdin产生了两个passwd,并通过"|"管道提供给smbpasswd命令来使用。
echo -e 处理特殊字符
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
示例
$echo -e "a\bdddd"
dddd
$echo -e "a\adddd" //输出同时会发出报警声音
adddd
$echo -e "a\ndddd" //自动换行
a
dddd
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。