我正在尝试使用 grep 正则表达式将 shell 变量发送到 awk。我正在尝试仅输出在远程服务器上创建的特定用户信息 但不知何故无法正常工作
我的尝试但空结果为空
#!/bin/bash
echo "Enter username which u want to add"
read Student3
ssh root@serverIP "useradd $Student3;"
awk -F: '{print $1, $3, $6, $7}' /etc/passwd | grep "^${Student3}"
但没有 grep 输出是:
root 0 /root /bin/bash
bin 1 /bin /sbin/nologin
daemon 2 /sbin /sbin/nologin
adm 3 /var/adm /sbin/nologin
lp 4 /var/spool/lpd /sbin/nologin
sync 5 /sbin /bin/sync
shutdown 6 /sbin /sbin/shutdown
halt 7 /sbin /sbin/halt
mail 8 /var/spool/mail /sbin/nologin
operator 11 /root /sbin/nologin
使用 grep | grep "^${Student3}"
空输出
您希望您添加的用户显示在本地
/etc/passwd
。如果它是您要解析的远程awk
系统上的文件,那么您需要使用它ssh
来访问数据:最后一个管道也可以写成
请注意,您不太可能希望
/etc/passwd
使用正则表达式解析数据,^$user
因为这将匹配任何用户名以$user
. 上面的两种代码变体通过不使用正则表达式匹配而是对完整用户名进行字符串比较来避免这种情况。