0

我正在尝试执行命令,但我需要获取命令行参数。这是我的问题:

这是代码:

pl_function(){
 node=$(echo "$1" | awk -F'\.' '{print $2}')
 echo $node
}

我有一个案例陈述:

case "$1" in -pl.*)
 pl_function
  ;;
esac

当我运行它时,它会打印一个空白。

另外,我想包括getopts, 以便不关心参数的顺序。假设我-location后面跟着一个论点,-grep后面跟着一个论点,然后-def_location没有论点。

在这种情况下我该如何使用getopts

4

2 回答 2

2

在函数$1, $2, et al 中是函数的参数。$1调用函数时需要显式传递脚本。

case "$1" in -pl.*)
 pl_function "$1"
  ;;

此外,您可以使用一些 shell 脚本魔术来进行字符串拆分,而不是调用 awk:

node=${1#*.}    # `#*.' removes a substring matching `*.' from the
                # front of $1
于 2013-10-15T16:01:27.823 回答
1

当我运行它时,它会打印一个空白。

因为您没有将任何参数传递给需要一个参数的函数。将您的函数调用替换为

my_function "$1"

此外,正如@fedorqui 所指出的,不要将保留字用于变量/函数名称。

于 2013-10-15T16:02:00.330 回答