解析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 args

host = foo

user = me

pass = secret

args = some args

请注意,由于脚本eval是由用户构造的字符串,因此它甚至不具有强大的鲁棒性,也没有向安全漏洞开放。它仅是作为一种可能的做事方式的示例。一种更简单的方法是要求用户在环境中传递数据。在bourne

shell中(即,不在csh系列中的任何东西):

$ host=blah user=blah pass=blah myscript.sh

工作得很好,和变量$host$user$pass将在脚本可用。

#!/bin/sh

echo host = ${host:?host empty or unset}

echo user = ${user?user not set}

...

以上是 解析Shell脚本参数 的全部内容, 来源链接: utcz.com/qa/399772.html

回到顶部