Что этот символ означает "#?"в кш - PullRequest
0 голосов
/ 21 февраля 2019

Что значит "#?"значит в кш скрипт?Например:

tt=03
while [ "$tt" !=' ' ];
do
 tt=${tt#"?}
done
echo $tt

Я ничего не получу здесь.И что "#?"значит в этом скипте?Спасибо.

1 Ответ

0 голосов
/ 22 февраля 2019

Предполагая исправленный синтаксис в то время, как предлагал downtheroad ( нужен пробел после [и до]), а также , пропуская " в tt=${tt#"?} (опущенная версия - это то, что вы цитируете).

Также тест в состоянии while должен соответствовать пустой строке '', в противном случае цикл не завершается.

  tt=${tt#?}

отрубает первый символ из строки .

См. эту тестовую программу (я добавил 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=)

...