我正在尝试执行命令,但我需要获取命令行参数。这是我的问题:
这是代码:
pl_function(){
node=$(echo "$1" | awk -F'\.' '{print $2}')
echo $node
}
我有一个案例陈述:
case "$1" in -pl.*)
pl_function
;;
esac
当我运行它时,它会打印一个空白。
另外,我想包括getopts
,以便不关心参数的顺序。假设我有-location
后跟一个参数,-grep
后跟参数和-def_location
后跟无参数。
在这种情况下如何使用getopts
?
答案 0 :(得分:2)
在函数$1
中,$2
等是函数的参数。调用函数时,需要显式传递脚本$1
。
case "$1" in -pl.*)
pl_function "$1"
;;
另外,你可以使用一些shell脚本魔术来进行字符串拆分而不是调用awk:
node=${1#*.} # `#*.' removes a substring matching `*.' from the
# front of $1
答案 1 :(得分:1)
当我运行它时,它会打印一个空白。
会,因为您没有将任何参数传递给期望的函数。用
替换你的函数调用my_function "$1"
此外,由@fedorqui提出的pointed不会将reserved words用于变量/函数名称。