@SKYnv

Bash скрипт и возвращаемое значение

Опыта в баше нет.
Набросал данный скрипт.
#!/bin/bash
out=let ping -c 1 $1 | awk '/time=/{print $7}' | sed 's/time=//g'

Скрипт отрабатывает верно и возвращает значение.
Собственно вопрос, почему конструкция
out=let
возвращает значение? И не несет ли это каких-либо скрытых проблем в себе.
  • Вопрос задан
  • 5753 просмотра
Решения вопроса 1
silvansky
@silvansky
Согласно этому мануалу, let вычисляет значение.

Вопрос у меня к автору вопроса: для чего вообще заводится out? Можно ведь сделать так:
#!/bin/bash
ping -c 1 $1 | awk '/time=/{print $7}' | sed 's/time=//g'

И скрипт выведет на экран результат.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Если вам просто в переменную загнать значение:
out=$(что то там)
Башизм, зато понадежнее будет.
Ответ написан
@Power
В вашем скрипте конструкция out=let задаёт для команды ping переменную окружения out со значением let. Т.к. ping не использует такую переменную, out=let можно просто убрать и ничего не изменится. А команда let тут вообще не при чём.
Про такой способ задания переменных окружения можно прочитать в linux.die.net/man/1/bash в секции Environment:
The environment for any simple command or function may be augmented temporarily by prefixing it with parameter assignments, as described above in PARAMETERS. These assignment statements affect only the environment seen by that command.

Ну, и для закрепления можете выполнить команду
out=blabla bash -c 'echo "$out"'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы