Баш, предупреждение без аргументов и решения по делу - PullRequest
90 голосов
/ 11 марта 2010

Я учу Баш.

Я хотел бы сделать простой скрипт, который, если не указаны аргументы, показывает какое-то сообщение. И когда я даю цифры в качестве аргумента, в зависимости от значения, это делает то или иное.

Я также хотел бы узнать предложения по лучшим онлайн-учебникам для начинающих в Bash

Спасибо

Ответы [ 4 ]

144 голосов
/ 11 марта 2010
if [[ $# -eq 0 ]] ; then
    echo 'some message'
    exit 0
fi

case "$1" in
    1) echo 'you gave 1' ;;
    *) echo 'you gave something else' ;;
esac

Расширенное руководство по написанию сценариев довольно хорошо. Несмотря на свое название, он лечит основы.

17 голосов
/ 16 октября 2014

Если заинтересован только в освобождении под залог, если отсутствует конкретный аргумент, Подстановка параметров отлично подходит:

#!/bin/bash
# usage-message.sh

: ${1?"Usage: $0 ARGUMENT"}
#  Script exits here if command-line parameter absent,
#+ with following error message.
#    usage-message.sh: 1: Usage: usage-message.sh ARGUMENT
10 голосов
/ 11 марта 2010

Пример

 if [ -z "$*" ]; then echo "No args"; fi

Результат

No args

Детали

-z - унарный оператор для длины строки, равной нулю. $* это все аргументы. Кавычки предназначены для обеспечения безопасности и содержат несколько аргументов, если они присутствуют.

Используйте man bash и ищите (ключ / ) «унарный» для большего количества операторов, подобных этому.

1 голос
/ 25 июля 2018

Старый, но у меня есть причина переработать ответ сейчас, благодаря некоторой предыдущей путанице:

if [[ $1 == "" ]] #Where "$1" is the positional argument you want to validate 

 then
 echo "something"
 exit 0

fi

Это выведет "Something", если нет позиционного аргумента $ 1. Это не подтверждает, что $ 1 содержит конкретную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...