По сути, вы вызываете мой Bash Script, набирая mybashscript
в консоли. Тогда это начинается:
Welcome to mybashcript! Choose an option (login|logout|view|erase|quit|):
Затем пользователь вводит любой желаемый ввод, который затем активирует скрипт Python ниже в соответствующем дереве каждого параметра.
Что мне интересно, так это как сделать так, чтобы пользователю нужно было всего лишь напечатать (если они уже использовали программу) что-то вроде mybashscript login
или mybashscript view
.
Поэтому любое слово, добавляемое после имени сценария Bash, затем принимается в качестве первого ввода в самом сценарии. Это возможно?
Вот мой сценарий, я не совсем понимаю, как включить $ 1, не давая ему спросить, нет ли аргумента.
#!/bin/bash
echo -n "Hello $USER, welcome to the guestbook! Choose an option (sign|view|save|erase): "
read option
if [ "$option" == "sign" ]; then
python /usr/local/bin/guestbook.data/sign_guestbook.py
elif [ "$option" == "view" ]; then
python /usr/local/bin/guestbook.data/view_guestbook.py
elif [ "$option" == "save" ]; then
python /usr/local/bin/guestbook.data/save_guestbook.py
elif [ "$option" == "erase" ]; then
python /usr/local/bin/guestbook.data/erase_guestbook.py
else
echo "Sorry, I didn't understand that."
fi
shift
удалит $ 1 и сдвинет остальные вниз, $ 2 станет $ 1, $ 3 станет $ 2…Ответы:
источник
В вашем bash-скрипте
$1
это первый аргумент,$2
второй аргумент и так далее.например, если у вас есть следующее в
test.sh
:Тогда вы получите следующее:
источник
Чтобы получить ввод из командной строки и передать его вашей программе, используйте $ 1 (для первого слова после команды), $ 2, $ 3 и так далее.
Например, предположим, что вы написали этот Bash Script (имя файла: testscript):
Это будет вывод, когда скрипт вызывается пользователем из консоли (не забудьте добавить разрешения x, чтобы скрипт мог выполняться оболочкой и поместил скрипт в / usr / local / bin /):
Спасибо за вашу помощь, это подтолкнуло меня в правильном направлении. Вот что я в итоге сделал для моего конкретного случая, если вам было любопытно; это может быть не самый лучший или самый элегантный способ использования Bash Script, но я только начал сегодня!
источник
Как я понимаю, вам нужно получить аргументы командной строки.
Возьмите пример ниже:
$1
представляет первый аргумент командной строки, который передается в вашу программу.Если мы вызовем сценарий выше (давайте используем имя, которое у вас было в вашем вопросе
mybashscript
) сlogin
аргументомМы получаем вывод ниже:
Если больше аргументов заданы, вы можете получить к ним доступ , используя
$2
,$3
..., и так далее. Но это полезно только тогда, когда у вас есть фиксированное количество аргументов. Если вы хотите использовать переменное количество аргументов, проверьте этот пост в StackOverflow.источник
Тестирование кода:
Объяснение:
[[ "$1" =~ ^(sign|view|save|erase)$ ]];
проверяет ввод с использованием регулярных выражений для более краткого кода, а не дляif-else
рендеринга.$1
Относится к первому позиционного аргумента , что эта функция приема, а не сам скрипт. Проверка[ -n "$1" ]
заключается в том, чтобы печататьSorry
оператор, только если введен какой-либо ввод.launch "$1" && exit
попытка проверить любой ввод через$1
, если это успешно, скрипт завершится.Предположения:
if launch "$option"; then ...
будет работать. Если это предположение неверно и проверка состояния выхода не улучшена, мы застрянем в цикле.$1
для запуска правильный сценарий в пути${1}_guestbook.py
.источник