Предполагая исправленный синтаксис в то время, как предложил downtheroad ( нужно пустое после [и до]), а также , пропуская « в tt=${tt#"?}
(опущенная версия - это то, что вы цитируете ).
Кроме того, тест в состоянии while должен соответствовать пустой строке ''
, в противном случае цикл не завершается.
tt=${tt#?}
[1113 ] отрубает первый символ из строки .
Смотрите эту тестовую программу (я добавил 2 эха и парены, чтобы иметь возможность видеть точное содержимое tt в цикле до и после прерывания:
tt=03
while [ "$tt" != '' ]
do
echo "A: (tt=$tt)"
tt=${tt#?}
echo "B: (tt=$tt)"
done
echo $tt
дает этот результат (обратите внимание на пустую последнюю строку из последнего эха):
A: (tt=03)
B: (tt=3)
A: (tt=3)
B: (tt=)