我在 hostlist 文件中有一个服务器列表,我正在尝试执行以下脚本:
#!/bin/bash
for server in `cat hostlist`; do
ssh $server 'hostname ;id $(cat /etc/passwd | grep Luyang | awk -F '[:]' '{print $1}') ; id ppandey' >> b
done
我想获取用户 Luyang 的 id 命令的输出。对于同样的情况,我已经提到过,id $(cat /etc/passwd | grep Luyang | awk -F '[:]' '{print $1}')
但在运行脚本时出现错误。
我也尝试在所有特殊字符前面加上“\”,但没有成功。
答案1
您应该查阅 shell 手册,了解转义/引用的工作原理。同时,还要研究 awk 的功能,这通常可以简化操作,提高速度和可读性。
这可能会有帮助:
ssh yourhost "hostname ;id \$( awk -F: '/Luyang/ {print \$1}' /etc/passwd)"