有很多方法可以解析sh中的参数。Getopt很好。这是一个简单的脚本,可以手动解析内容:
#!/bin/sh# WARNING: see discussion and caveats below# this is extremely fragile and insecurewhile echo $1 | grep -q ^-; do # evaluating a user entered string! # Red flags!!! Don't do this eval $( echo $1 | sed 's/^-//' )=$2 shift shiftdoneecho host = $hostecho user = $userecho pass = $passecho args = $@
运行示例如下:
$ ./a.sh -host foo -user me -pass secret some argshost = foouser = mepass = secretargs = 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}...


