解析Shell脚本参数
$myscript.sh -host blah -user blah -pass blah
我想将参数传递给它。
我已经习惯了这样做$1
,$2
,$3
....但我要开始对其进行命名
回答:
有很多方法可以解析sh中的参数。Getopt很好。这是一个简单的脚本,可以手动解析内容:
#!/bin/sh# WARNING: see discussion and caveats below
# this is extremely fragile and insecure
while echo $1 | grep -q ^-; do
# Evaluating a user entered string!
# Red flags!!! Don't do this
eval $( echo $1 | sed 's/^-//' )=$2
shift
shift
done
echo host = $host
echo user = $user
echo pass = $pass
echo args = $@
运行示例如下:
$ ./a.sh -host foo -user me -pass secret some argshost = foo
user = me
pass = secret
args = some args
请注意,由于脚本eval是由用户构造的字符串,因此它甚至不具有强大的鲁棒性,也没有向安全漏洞开放。它仅是作为一种可能的做事方式的示例。一种更简单的方法是要求用户在环境中传递数据。在bourne
shell中(即,不在csh系列中的任何东西):
$ host=blah user=blah pass=blah myscript.sh
工作得很好,和变量$host
,$user
,$pass
将在脚本可用。
#!/bin/shecho host = ${host:?host empty or unset}
echo user = ${user?user not set}
...
以上是 解析Shell脚本参数 的全部内容, 来源链接: utcz.com/qa/399772.html