将命令输出作为位置参数传递给Linux shell脚本中的脚本文件

时间:2017-10-31 11:29:08

标签: linux bash shell

我想将命令的输出作为位置参数传递给脚本文件。请看下面的命令。

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

3 个答案:

答案 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