【问题标题】:Bash Script not returning anything, using positional parametersBash脚本不返回任何东西,使用位置参数
【发布时间】:2020-02-21 03:36:08
【问题描述】:

理论上运行脚本应该根据使用的参数每行输出结果

脚本名称为“stdout”,并使其成为可执行文件。我在控制台中输入“./stdout GOOGLE.COM”,但没有任何反应

#!/bin/bash

if [ $# -lt 1 ]; then
        echo "Results: [ cat whois_google.com.txt | grep $1 | cut -d ' ' -f 3 | sort -r]"
        exit 1
fi

没有错误,文本文件是一个虚拟文件,包括简单的字段,例如“服务器名称:GOOGLE.COM.AR”,运行命令后我希望输出不同的服务器名称

【问题讨论】:

  • $( cat ...)替换[ cat ...]
  • 你有[ $# -lt 1 ],你应该有-lt以外的东西。也许-ge-eq?一旦你得到预期的echo,你可以按照@Cyrus 的修正来实际执行子shell。
  • exit 1 通常表示存在错误。你想要exit 0 或者只是让脚本运行到最后,它会返回脚本执行的最后一个外部命令的状态码。

标签: linux bash syntax command-substitution


【解决方案1】:

如果您将参数传递给脚本,它将永远不会执行任何操作...if [ $# -gt 0 ]; then 脚本行正在检查参数数量是否小于 1。尝试更改为 -gt。调用您的脚本stdout 也是一个坏主意,为您的脚本的功能选择一个名称。

【讨论】:

  • 可能是-ge,不是吗?使用-gt,它只有在有 2 个或更多参数时才有效。或者,if (( $# )) 对 1 个或多个参数为真,对 0 个为假。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-10
  • 2023-03-28
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多