我想将命令的输出作为位置参数传递给脚本文件。请看下面的命令。
whois -h 192.168.0.13 google.com | grep -e Domain\ Name
这个命令会给我一个名字"。我想要做的是将该输出再次作为位置参数传递给shell脚本文件。
my-file.sh:
#!/bin/bash
#My First Script
if [ $1 == "my-domain-name" ]; then
echo "It is ok"
exit 1
fi
所以,基本上我想做的就是这样。
whois -h 192.168.0.13 google.com | grep -e Domain\ Name | -here pass the Name to my-file.sh and run that file
答案 0 :(得分:4)
只需定义一个新函数来检查whois
输出,并在if条件中使用返回字符串,如下所示。这样,您可以在执行脚本时避免使用多级管道,而只需通过一个简单的函数来控制它。
get_whois_domainName() {
whois -h 192.168.0.13 google.com | grep -e Domain\ Name
}
if [ "$(get_whois_domainName)" = "my-domain-name" ]; then
echo "It is ok"
exit 0
fi
但如果您仍希望通过命令行传递,请执行
my-file.sh "$(whois -h 192.168.0.13 google.com | grep -e Domain\ Name)"
答案 1 :(得分:3)
您可以使用command substitution执行此操作:
my-file.sh "$(whois -h 192.168.0.13 google.com | grep -e Domain\ Name)"
阅读比使用管道和xargs
更直接,这是另一种有效的解决方案。
答案 2 :(得分:1)
使用awk
从输出中选择正确的列。然后使用xargs
将其输出作为参数传递给脚本。
whois google.com | grep -e Domain\ Name | awk '{ print $3 }' | xargs bash ./test.sh