Não vejo por que você está usando um loop while
. Solte o while
e seus problemas desaparecerão:
#!/usr/bin/env bash
IN="ItemName -a -b"
itemA=0
itemB=0
itemI=0
## Read the array, no loop required
IFS=' -' read -ra ARR <<<"$IN"
## Save the 1st element as itemN
itemN=${ARR[0]}
## Remove itemN from the array
unset ARR[0]
## Now loop over the rest
for x in "${ARR[@]}"; do
y=${x:0:1}
case $y in
"a") itemA=1 ;;
"b") itemB=1 ;;
"I") itemI=1 ;;
esac
done
echo "itemN is $itemN"
echo "itemA is $itemA"
echo "itemB is $itemB"
echo "itemI is $itemI"
Executando o script acima das impressões:
itemN is ItemName
itemA is 1
itemB is 1
itemI is 0