2015-07-20 77 views
1

我剛開始shell腳本和測試目的,我試圖創建我個人使用的腳本。 我有一個家庭文件服務器,我同步和有時和我試圖創建一個交互式腳本,所以我可以使MP3同步任務更容易。shell腳本 - 雖然條件檢查範圍失敗

這裏是我的腳本:

#!/bin/bash 
############################################## 
############ MP3 SYNC SCRIPT ############## 
############################################## 
#### REV: 01 20/07/2015 
#### Author: Marcio Ribeiro 

echo -e "Sincronizar do storage para o note (escolha 01) ou do note para storage (escolha 02): \n 01 Destino final Note: \n 02 Destino final Storage:" 
read DESTINO 
DESTINO_CK=[0]-[12] 

    while [ $DESTINO != $DESTINO_CK ] ; do 

    read -p "Por favor escolha entre 01 ou 02:" DESTINO 
done 

echo -e "Digite a letra inicial da banda que deseja utilizar na sincronização em CAPS" 
read LETRA 
LETRACK={AZ} 

    while [ "$LETRA" != $LETRACK ]; do 

    read -p "Digite a letra inicial da banda que deseja utilizar na sincronização em CAP:" LETRA 
done 

LEFT="/storage/Marcio/Mp3/${LETRA}/" 
RIGHT="/data/mp3/${LETRA}/" 

if [ $DESTINO = "01" ]; then 
    echo -e "`rsync -rvz ${LEFT} ${RIGHT}`; \n `ls -lha ${RIGHT}`" 
else 
    echo -e "`rsync -rvz ${RIGHT} ${LEFT}`; \n `ls -lha ${LEFT}`" 

    fi 

我掌握了一些基本的工作,現在我想用戶交互限制到我真正想要的,但我失敗了。 基本上在第一個用戶提示我只想接受01或02作爲輸入,並在第二個用戶提示只有一個大寫字母。 任何人都有一個線索,爲什麼我在這麼簡單的事情上失敗?

+0

'='和'!='做精確匹配,而不是模式匹配。 – Barmar

+0

@Barmar:除非在[[...]]中。 – choroba

+0

'echo -e「$(cmd)」'是一種反模式。只需執行該命令。 –

回答

0

我得到它的工作,它不是一個漂亮的代碼或最好邏輯,但它的工作原理:

!/bin/bash 
############################################## 
############ MP3 SYNC SCRIPT ############## 
############################################## 
#### REV: 01 20/07/2015 
#### Author: Marcio Ribeiro 

echo -e "Sincronizar do storage para o note (escolha 1) ou do note para storage (escolha 2): \n 1: Destino final Note \n 2: Destino final Storage" 
read DESTINO 
      until [ "$DESTINO" = "1" ] || [ "$DESTINO" = "2" ]; 
do 
      read -p "Por favor escolha entre 1 ou 2:" DESTINO 
done 
#### 
echo -e "Digite a letra inicial da banda que deseja utilizar na sincronização em CAPS" 
read LETRA 
LETRA_CK='[A-Z]' 

      while [[ "$LETRA" != $LETRA_CK ]]; 
do 
      read -p "Digite a letra inicial da banda que deseja utilizar na sincronização em CAPS:" LETRA 
done 
#### 
LEFT="/storage/Marcio/Mp3/${LETRA}/" 
RIGHT="/data/mp3/${LETRA}/" 

    if [ $DESTINO = "01" ]; then 
      echo -e "`rsync -rvz ${LEFT} ${RIGHT}`; \n `ls -lha ${RIGHT}`" 
else 
      echo -e "`rsync -rvz ${RIGHT} ${LEFT}`; \n `ls -lha ${LEFT}`" 

fi 

任何改進的想法,歡迎。