Многие из постов, которые я только что прочитал, имеют много ответов, которые охватывают это, но я не понимаю, что я делаю на самом деле; это было хитом и мисс.
Скрипт .sh, с которым я работаю:
#!/bin/bash
# init
input=$1
output=$(ping -c 1 "$input" 2>/dev/null)
if [ $? -eq 0 ]; then
ip=$(printf '%s' "$output" | gawk -F'[()]' '/PING/{print $2}' 2>/dev/null)
echo "$ip";
sleep 2
else
echo "Host not found";
fi
Многие из постов, которые я только что прочитал, охватывают это и утверждают, что есть несколько различных методов, которые могут быть использованы для достижения этой цели, но я до сих пор не понимаю, как правильно их использовать. По сути, я пытаюсь проверить, была ли переменная "$ 1" установлена аргументом, и показать что-то вроде:
echo No argument given
если переменная пуста, вместо того, чтобы просто пропинговать хост. Мой вопрос: как мне это делать, не усложняя вещи?
Помощь всегда приветствуется, спасибо заранее.
PS: я все еще довольно новичок в среде Linux, так что будьте спокойны со мной.
Ответы:
Я бы добавил чек в начале. В случае сбоя выведите сообщение и выйдите.
источник
ScriptFile
) и параметр, явно заданный для пустой строки (ScriptFile "" Param2 ...
): в этом случае вам нужно использовать $ # , как предлагает @TorreЕсли вы хотите узнать количество переданных аргументов, используйте $ #. Нравится:
Надеюсь, это поможет.
источник