Bash 如何仅将命令的结果输出到文件?
我试图确定端点的IP并将其写入文件。 当我打字时:Bash 如何仅将命令的结果输出到文件?,bash,stdout,Bash,Stdout,我试图确定端点的IP并将其写入文件。 当我打字时: dig +short endpoint.com 在命令提示下 我得到: 但是,当我尝试在脚本中使用此命令将该输出写入文件时: dig +short $EndpointName > /home/ec2-user/endpoint-ip.txt 我在文件中得到这个: endpoint.com 10.50.4.235 它包含了变量的值,我更希望得到结果(仅限ip)。非常感谢你的帮助 尝试展示endpoint.com的grep dig +
dig +short endpoint.com
在命令提示下
我得到:
但是,当我尝试在脚本中使用此命令将该输出写入文件时:
dig +short $EndpointName > /home/ec2-user/endpoint-ip.txt
我在文件中得到这个:
endpoint.com
10.50.4.235
它包含了变量的值,我更希望得到结果(仅限ip)。非常感谢你的帮助 尝试展示endpoint.com的grep
dig +short endpoint.com | grep -v endpoint.com > endpoint-ip.txt
文件中的结果仅给出IP
cat dig-ip.txt
23.239.26.161
在将值分配给变量$EndPointName时,必须进行修改。请尝试
host endpoint.com
。也许您需要使用grep
来更好地过滤它。当stdout是终端或文件而不是管道时,某些命令的操作会有所不同。尝试dig+short endpoint.com
和dig+short endpoint.com | cat
您需要引用“$EndpointName”。您一定在做一些您没有提到的事情-dig+short'endpoint.com'>endpoint ip.txt
只将ip地址写入文件。您确定$EndpointName
的内容与预期一致吗?您是否正在追加(>
)而不是覆盖(
)?你的挖掘版本是什么?谢谢-这是我脚本的全部内容:#/bin/bash
EndpointName=$(/home/ec2 user/endpoint ip.txt
dig版本是:dig 9.8.2rc1-RedHat-9.8.2-0.62.rc1.55.amzn1无附加,仅一个>感谢我尝试使用“aroundEndpointName
但脚本失败-错误是“无法运行命令EndpiontName…等等”“变量$EndpointName用于获取值、某个文件或另一个命令的结果?@KaviseThanky-这产生了相同的结果-文件中的两个条目:FQDN和IPTry更改输出文件名,可能还有其他内容正在写入该文件。此外,EndpointName.txt包含多少行?
#!/bin/bash
URL="endpoint.com"
dig +short $URL > dig-ip.txt
cat dig-ip.txt
23.239.26.161