webForumDet fria alternativet

Bash, läsa från fil till veriabler

Programmering

1 svar · 531 visningar · startad av noratx

Medlem sedan feb. 200193 inlägg
Frågan#1

Hej!

Jag sitter och fnular på ett backup/restore script och har kommit en ganska bra bit på vägen, men har nu stött på ett problem.

med hjälp av "ncftpls" kontaktar jag min backupserver för att generera en lista med backupfiler.
Listan sparas i en fil med varje filnamn på en egen rad.
Vad jag nu skulle vilja uppnå, är att läsa in varje filnamn i en variabel, så att jag kan skapa en nedladdningsmeny.

Om listan jag får ner innehåller:

backup_monday.tgz
backup_tuesday.tgz
backup_wednesday.tgz

så vill jag skapa en meny, typ:

"Enter the corresponding number to download the desired file: "
1. backup_monday.tgz
2. backup_tuesday.tgz
3. backup_wednesday.tgz

Finns det någon enkel lösning för detta, eller måste jag gå den krångliga vägen och visa filen och låta användaren själv skriva in filnamnet manuellt?

PS. Hoppas jag postar i rätt forum nu bara. DS
PPS. Hur jag gör själva menyn vet jag redan, det jag inte vet är hur jag läser in rad för rad i separata variabler. DDS.

Medlem sedan jan. 2007177 inlägg
#2

En principlösning, utan felhantering, med de valbara filer i filen "list.txt" i samma directory som skriptet.

#!/bin/bash

SDIR=$(dirname "$0")
cd "$SDIR"

LIST=$(cat list.txt)

echo 
echo "Choose one file from the following list of choices:"
echo	
N=1
for ITEM in $LIST
	do 
		echo $N") " $ITEM
		N=$[ $N + 1 ]
	done
echo	
read CHOISE
echo	

FILE=""
N=1
for ITEM in $LIST
	do
		if [ $N -eq $CHOISE ]
		then
			FILE=$ITEM
		fi 
		N=$[ $N + 1 ]
	done

echo
echo $CHOISE
echo $FILE
echo

exit 0
255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)