2017-02-23 70 views
0

Вот мой сценарий Bash.

Предполагая, что: 1) go.sh это скрипт для выполнения 2) пользователь будет запустить скрипт таким образом

# ./go.sh -v file1.txt file2.txt 

или

# ./go.sh --verbose file1.txt file2.txt 

3) Я хотел бы имеют более элегантный способ написать это:

#!/bin/bash 
Verbose_Mode=0 

until [ "$#" == "0" ]; do 
    case $1 in 
    "-v" or "--verbose") 
     Verbose_Mode=1 
     ;; 

Это приведет к тому, что i n синтаксическая ошибка из-за: "- v" или "--verbose".

Мой вопрос: Как я могу правильно написать (если это возможно) код:

#!/bin/bash 
Verbose_Mode=0 

until [ "$#" == "0" ]; do 
    case $1 in 
    "-v") 
    Verbose_Mode=1 
    ;; 
    --verbose") 
    Verbose_Mode=1 
    ;; 
    esac 

Заранее спасибо за ответы.

+0

Обратитесь к [Как написать тематическое заявление в Bash] (HTTP://stackoverflow.com/questions/16673570/bash-case-statement) для правильного синтаксиса операторов case Bash. – codeforester

+0

Вы разрешаете пользователю использовать коммутатор в любом месте линии или только в качестве первого параметра? Если только сначала вы можете просто протестировать его, сдвиньте и перейдите. – grail

+0

См. Также [BashFAQ/35] (http://mywiki.wooledge.org/BashFAQ/035) и [ComplexOptionParsing] (http://mywiki.wooledge.org/ComplexOptionParsing). –

ответ