Я пишу центральный скрипт, который действует как меню, управляемое клиентом, через который я запускаю другие скрипты на основе ввода.
#!/bin/bash
echo "Server Name - `hostname`"
echo "-------------------------------"
echo " M A I N - M E N U"
echo "-------------------------------"
echo "1. init"
echo "2. insert"
echo "3. show"
echo "4. update"
echo "5. rm"
echo "6. ls"
echo "7. shutdown -> shutdown the server"
while :
do
printf '> '
read -r varname
set -- $varname
case $1 in
init)
./init.sh $2
echo $status
;;
insert)
./insert.sh $2 $3 '' $4
;;
show)
./show.sh $2 $3
;;
update)
./insert.sh $2 $3 'f' $4
;;
rm)
./rm.sh $2 $3
;;
ls)
./ls.sh $2 $3
;;
shutdown)
exit 0
;;
exit)
exit 0
;;
*)
#echo "Error: Bad request"
;;
esac
done
Ток:
Я специально добавилвыведите оператор '>', чтобы получить интерактивный интерфейс, подобный узлу cli.
insert user1 google 'login: blahblah@gmail.com \ npass: blah'
- $ 1 - это вставка
- $ 2 - это пользователь1
- $ 3 - это Google
- $ 4 - это 'login: blahblah@gmail.com \ npass: blah'
Ожидается:
Я хочу читать аргументы так же, как мы передаем аргументы при запуске скрипта.
Пример:
sh add. sh 10 20 или sh add.sh "10" "20"
В любом случае, когда мы читаем $ 1 или $ 2 в сценарии оболочки add , мыбудут получать значения 10 и 20.
insert user1 google 'login: blahblah@gmail.com \ npass: blah'
- $ 1 - вставить
- $ 2 - это user1
- $ 3 - это google
- $ 4 - это логин: blahblah@gmail.com \ npass: blah
Я не хочу получать входные данные, а затем удалять завершающие кавычки. Я хотел бы иметь точное поведение, когда мы запускаем сценарий и передаем аргументы.
PS: Пожалуйста, предложите, как получить cli точно так же, как узел, который имеет доступ к ранее выполненным командам, используя стрелку вверх.
Заранее спасибо