2017-12-13 4 views
2

私はbashスクリプトの初心者です。私は、ユーザーの入力からOSとソフトウェアのバージョンに基づいてソフトウェアをダウンロードする1つのコードを書いた。ユーザーが権利os-bit number(64 or 32) and correct software versionを提供するまで、私のコードは再びループする必要があります。条件が満たされた場合は、次の行を実行し続ける必要があります。ここでユーザー入力が成功するまでコードをループします。

echo 'Enter the OS-Bit' 
read osbit 
echo 'Enter the Software Version To Install' 
read software_version 

私の完全なコードは、あなたが、無限ループに条件を入れ 、入力が正しいとき、それから抜け出すことができ

if [ $osbit == "64" ];then 
    os_version="x86_64" 
    cd $directoy_path; curl -L -O https://myblog/downloads/software-$software_version-$os_version.rpm 

elif [ $osbit == "32" ];then 
    os_version="i686" 
    cd $directoy_path; curl -L -O https://myblog/downloads/software-$software_version-$os_version.rpm 

else 
    echo 'Please enter valid os bit #' 
fi 
rpm -vi $software_version-$os_version.rpm 

echo 'Download Completed' 
echo Installing $software_version 
rpm --install $directoy_path/dfg-$software_version-$os_version.rpm 

答えて

2

です:

echo 'Enter the Software Version To Install' 
read software_version 

while true; do 
    echo 'Enter the OS-Bit' 
    read osbit 

    if [ "$osbit" == "64" ];then 
     os_version="x86_64" 
     break 
    elif [ "$osbit" == "32" ];then 
     os_version="i686" 
     break 
    else 
     echo 'Please enter valid os bit #' 
    fi 
done 

cd "$directoy_path" && curl -L -O "https://myblog/downloads/software-$software_version-$os_version.rpm" 
+0

その作業。これは私が探しているものです。ありがとうございました – Mangoski

0

このコードは、$osbitの後に$os_versionに割り当てられます。うまく選ばれました。したがって、それはwhileループ内の不要なif文はありません。また

while 
    read -r -p "Enter the OS-Bit: " osbit 
    [[ $osbit != 32 && $osbit != 64 ]] 
do  
    echo "Please enter valid os bit #" 
done 

if [[ $osbit = 64 ]]; then 
    os_version="x86_64" 
elif [[ $osbit = 32 ]]; then 
    os_version="i686" 
fi 

を、このような単純な「メニュー」のために、あなたはselectを使用することができます。

echo "Enter the OS-Bit:" 

select os in "32 bit" "64 bit"; do 
    case $os in 
     "32 bit") os_version="x86_64"; break ;; 
     "64 bit") os_version="i686"; break ;; 
      *) echo "Please choose a valid option:" ;; 
    esac 
done 
関連する問題