Titel几乎拥有它。我试图执行--options args
事件,而不是运行./command --option1 args --option2 args
我正在执行./command '--option1 args --option2 args
。
array=( $1 )
POSITIONAL=()
while [[ ${#array[@]} -gt 0 ]]; do
key="${array[0]}"
case $key in
--title)
title="${array[1]}"
echo 1
shift
shift
;;
--artist)
artist="${array[1]}"
echo 2
shift
shift
;;
*) # unknown option
POSITIONAL+=("${array[0]}") # save it in an array for later
shift
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameters
在此代码中,shift
无效。有没有办法在数组上使用shift
?
答案 0 :(得分:3)
您可以使用数组切片来模拟移位:
None
如果你有现有的处理位置参数的代码,你可以从数组中设置它们:
array=(aardvark baboon "clouded leopard" dolphin)
while (( ${#array[@]} ))
do
echo "Animal: ${array[0]}"
array=( "${array[@]:1}" )
done