getopts entrada Unix

0

No meu código abaixo, é como tentar fazer com que meu código leia a entrada que o usuário insere no meu código, conforme mostrado abaixo

#./MyProject -a -b OR -b -a

No entanto, recebo um erro de sintaxe e não passam os testes fornecidos pelo programa: Os testes a seguir são: ter entradas que não são & b (ou seja, cz), não ter entradas, ter muito poucos argumentos , tendo muitos argumentos,

#Use just prints out the format like this : ./MyProject -a -b

 - if ( ! getopts ":ab" arg) then  
echo $use  
fi 

 while [getopts ":ab" arg2] 
do
         case $arg2 in

        t) if (($1 != "t" && $1 != "o")); then
         echo $use 
     fi   
 esac   
done  
}
    
por Bob 07.03.2017 / 11:37

1 resposta

4

O exemplo a seguir deve funcionar para você.

#!/bin/bash

usage() {
    echo "Usage: $0 -a -b"
    exit
}

while getopts ":a:b:" arg; do
    case $arg in
        a)
            a=${OPTARG}
            (($a == "t" || $a == "o")) || usage
            ;;
        b)
            b=${OPTARG}
            ;;
        *)
            usage
            ;;
    esac
done

echo $a
echo $b
    
por 07.03.2017 / 11:46