大家好我正在编写一个脚本来解析bash中的一些参数,我想按如下方式运行我的代码:
bash myScript.sh +value value1 +valuei value2 ... +valuek valuer
并使用该标志创建变量以存储该参数,如下所示:
variable1=value
variable2=value1
variable3=value
variable4=value2
.
.
.
valriabler= valriablem
注意,我只想通过删除前面示例中的+符号来保存标志的值,为了实现这一点,我试过了:
#!/bin/bash
variable1=$(echo $1 | cut -d "+" -f 2)
variable2=$2
echo $variable1
echo $variable2
在我跑完之后,我得到了:
bash myScript.sh +hola hi
hola
hi
我可以解析前两个参数,但问题是我想为多个变量做这个:
myScript +value value1 +valuei value2 ... +valuek valuer
我想感谢有关如何自动化的任何帮助?这个任务,我将解析与同一结构成对出现的多个参数,我想将它们的值存储在变量中,我想感谢任何关于如何实现这一点的建议。 注意,我想避免使用getopts,因为我想使用复杂的标志。
答案 0 :(得分:1)
你应该使用数组,并按照这样做。
#!/bin/bash
while (( $# )); do
arr+=("${1#+}")
shift
done
您将下一个变量分配给下一个元素,将其移除,如果有更多则继续。你可以像这样回应它们。
for i in "${arr[@]}"; do
echo "$i"
done
答案 1 :(得分:1)
您是否知道任何Bourne Shell支持一次性分配,并通过变量赋值为命令添加前缀?
variable1=value variable2=val2 variable3=val3 myscript args ...
答案 2 :(得分:-1)
这是一种实现参数解析的方法,这个脚本生成一个带有变量属性值的csv。
#!/bin/bash
touch archive.csv
while (($# >= 1))
do
echo "$(echo $1| tr -d "+"),$2" >> archive.csv
shift 2
done
cat archive.csv
我可以这样运行:
bash parse.sh +value value1 +valuei value2
我得到了:
value,value1
valuei,value2
这样可以解析参数。