2015-07-20 97 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 

任何改进的想法,欢迎。