Меню с множественным выбором в Linux Script - PullRequest
0 голосов
/ 26 июня 2019

Я сделал скрипт, с помощью которого я получаю список файлов с 5 серверов. Вывод скрипта выглядит примерно так:

--------------------------------------------------------
   Server1|
--------------------------------------------------------
Jun   | 25    | 14:40 | ./DEPE_ES36250145.22.DEL.Z    
Jun   | 26    | 08:37 | ./DEPE_ES35470064.22.DEL.Z    
Jun   | 26    | 09:25 | ./FRESCHI_ORDERS_201906260906.DEL.Z
Jun   | 26    | 13:05 | ./0003625_ORDERS_20190626_130521.DEL.Z

Мое желание - запустить один из двух написанных мной скриптов.

После получения списка файлов я хочу выбрать имя файла (может быть, с помощью мыши, чтобы я мог вставить его), пожелать, чтобы мне было предложено скопировать / оцифровать имя файла, затем (с параметрами) предлагается выбрать сервер, с которого необходимо восстановить файл.

Исходя из этого, я написал этот скрипт меню.

# Copia File Ordini in Locale
# Bash Menu Script
PS1='Cosa vuoi recuperare? '
options=("Ordini" "Quadrature" "Annulla")
select opt in "${options[@]}"
do
    case $opt in
        "Option 1")
            $ordini='./getFileOrd.sh'
            eval $ordini
            ;;
        "Option 2")
            $quad='./getFileOrdQ.sh'
            eval $quad
            ;;
        "Annulla")
            break
            ;;
    esac
done

read -p "Quale file vuoi recuperare? (Copia e incolla il nome del file compresa l'estensione) " file

PS2="Da quale server vuoi copiare" $file "? "
options=("Server1" "Server2" "Server3" "Server4" "Server5" "Annulla")
select opt in "${options[@]}"
do
    case $opt in
        "Option 1")
            sftp -q User1@Server1:/work/app/User1/riordino_sb/historical/output/"$file"
            ;;
        "Option 2")
            sftp -q User1@Server2:/work/app/User1/riordino_sb/historical/output/"$file"
            ;;
        "Option 3")
            sftp -q User1@Server3:/work/app/User1/riordino_sb/historical/output/"$file"
            ;;
        "Option 4")
            sftp -q User1@Server4:/work/app/User1/riordino_sb/historical/output/"$file"
            ;;
        "Option 5")
            sftp -q User1@Server5:/work/app/User1/riordino_sb/historical/output/"$file"
            ;;
        "Annulla")
            break
            ;;
        *) echo "Scegli una delle opzioni";;
    esac
done

В конце скрипта выбранный файл копируется в домашнюю директорию пользователя. Меню работает нормально. Моя проблема в том, что ./getFileOrd.sh не запускается и, вероятно, также вторая часть сценария.

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Альтернатива:

#!/bin/bash

# Copia File Ordini in Locale
# Bash Menu Script
PS3='Cosa vuoi recuperare? '
options=("Ordini" "Quadrature" "Annulla")
declare file

select opt in "${options[@]}"
do
    case $opt in
        "Ordini")
            file='./getFileOrd.sh'
            break
            ;;
        "Quadrature")
            file='./getFileOrdQ.sh'
            break
            ;;
        "Annulla")
            break
            ;;
    esac
done

echo "file = $file"
[ ! -z $file ] && eval "$file"
0 голосов
/ 26 июня 2019

Это поможет вам в этом:

#!/bin/bash

# Copia File Ordini in Locale
# Bash Menu Script
PS3='Cosa vuoi recuperare? '
options=("Ordini" "Quadrature" "Annulla")
declare scr

select opt in "${options[@]}"
do
    case $opt in
        "Ordini")
            scr='./getFileOrd.sh'
            break
            ;;
        "Quadrature")
            scr='./getFileOrdQ.sh'
            break
            ;;
        "Annulla")
            break
            ;;
    esac
done

echo "script = $scr"
[ ! -z $scr ] && eval "$scr"

# where is $file set???  <--- ???

PS3="Da quale server vuoi copiare ${file}?"
options=("Server1" "Server2" "Server3" "Server4" "Server5" "Annulla")
select opt in "${options[@]}"
do
    case $opt in
        "Server1")
            sftp -q User1@Server1:/work/app/User1/riordino_sb/historical/output/"$file"
            break
            ;;
        "Server2")
            sftp -q User1@Server2:/work/app/User1/riordino_sb/historical/output/"$file"
            break
            ;;
        "Server3")
            sftp -q User1@Server3:/work/app/User1/riordino_sb/historical/output/"$file"
            break
            ;;
        "Server4")
            sftp -q User1@Server4:/work/app/User1/riordino_sb/historical/output/"$file"
            break
            ;;
        "Server5")
            sftp -q User1@Server5:/work/app/User1/riordino_sb/historical/output/"$file"
            break
            ;;
        "Annulla")
            break
            ;;
        *) echo "Scegli una delle opzioni";;
    esac
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...