cas говорит: «В этом сценарии так много неправильного , что я даже не знаю, с чего начать…». Что ж, у меня есть идеи, с чего начать:
"$ middle"
), если у вас нет веской причины не делать этого: {{1 }} и вы уверены, что знаете, что делаете. $ (echo "$ middle" | grep '.')
будет равно 'true'
, только если "$ middle"
равно правда
.
Результатом grep
является содержимое строки (строк) из входа
, которые соответствуют шаблону, указанному в качестве параметра. .
- это шаблон, который означает «любой символ»,
поэтому grep '.'
будет соответствовать любой непустой строке ввода.
Чтобы проверить фактический период (.
), используйте grep '\.'
.
Обратите внимание, что это будет соответствовать W.
, но также .W
, ...
, 3.14159
и т. Д. , а
?
Ожидаете ли вы, что этот код будет выполняться более одного раза? Ожидаете ли вы, что
будет давать разные результаты при многократном выполнении с одними и теми же данными?
Где конец цикла? -eq
и -ne
следует использовать только при сравнении целых чисел;
используйте =
и ! =
для строк. -z STRING1 -ne STRING2
? Могут быть и другие проблемы, но мои глаза слишком болят, чтобы смотреть на это дальше.