【发布时间】:2015-10-10 04:56:15
【问题描述】:
我刚开始编写 shell 脚本,出于测试目的,我正在尝试创建脚本供我个人使用。 我有一个家庭文件服务器,我有时会从中同步,我正在尝试创建一个交互式脚本,这样我就可以更轻松地完成 mp3 同步任务。
这是我的脚本:
#!/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 作为输入,而在第二个用户提示上只有一个大写字母。 有人知道为什么我在这么简单的事情上失败了吗?
【问题讨论】:
-
=和!=进行精确匹配,而不是模式匹配。 -
@Barmar:除非在
[[ ... ]]。 -
echo -e "$(cmd)"是一种反模式。执行命令即可。
标签: linux bash shell while-loop wildcard