2015-10-09 5 views
0

Если флаг getopts установлен в true, как мне сделать другой флаг в соответствии с ним?Если один флаг getopts активен, как я могу сделать другой флаг, он будет действовать определенным образом?

option_r=false 
option_v=false 

while getopts 'r:v' option 
do 
case "$option" in 

r) option_r=true 
    *Just to set the flag to true* 
    ;; 

v) option_v=true 
    if *option -r is set to true* 
    then 
    cp -r directory1 directory2 

    if *option -r is set to false* 
    then 
    cp directory1 directory2 (copy normally) 
    ;; 

Надеюсь, я правильно объяснил себя.

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

Заранее благодарен!

ответ

1

Я бы сделал это в два этапа: сначала получите аргументы, затем примените логику. Вот пример:.

option_r=false 
option_v=false 
while getopts "rv" opt; do 
    case $opt in 
     r) 
      option_r=true 
      ;; 
     v) 
      option_v=true 
      ;; 
    esac 
done 

if [ "$option_v" = true ] ; then 
    if [ "$option_r" = true ] ; then 
     cp -r directory1 directory2 
    else 
     cp directory1 directory2 
    fi 
fi 
+1

Это необходимо, поскольку 'getopts' все равно, какой заказ варианты приходят Вы должны обслуживать как команда' -r -V' и команда '-v -r' – rojomoke

 Смежные вопросы

  • Нет связанных вопросов^_^