2016-08-24 2 views
-1

Я использую ksh на поле HP-UX.Ksh - Script: Список файлов и хранить как переменные

В части моего сценария я хочу перечислить определенные файлы (*.xml), пронумеровать их и попросить пользователя выбрать файл, набрав номер и нажав enter. Это имя файла будет сохранено в виде переменной.

Пример вывода:

Please choose a file: 
1) bar27.xml  
2) foo1.xml  
3) foobar4.xml 

Затем пользователь вводит в 1, 2 или 3 и нажмите ввод. Выбранное имя файла должно храниться как переменная. Поэтому, если пользователь выбирает 2, переменная должна содержать foo1.xml.

+3

Вы должны смотреть вверх 'select' встроенный. Он предназначен для поддержки этого. Обратите внимание, что поиск в Интернете может быть более сложным; 'select' имеет множество значений. Поиск с помощью «ksh select» получает для меня -топные результаты, в том числе [меню сценария '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' ') (http://stackoverflow.com/questions/16750160/linux-script-select-menu). –

+1

Если у вас все еще есть проблемы после этого, обновите Q, пытаясь использовать 'select' и оставьте комментарий, который вы обновили. Q. Если вы его заработаете, отправляйте свой ответ (вы можете принять свой собственный ответ после 48 hrs, чтобы получить ценные очки репутации) или удалить этот Q. Удачи. – shellter

ответ

1

Я пришел с, после чего работает:

files=$(ls *.xml) 
i=1 

for j in $files 
do 
echo "$i) $j" 
file[i]=$j 
i=$((i + 1)) 
done 

echo "Choose an XML file from above to use:" 
read v_CHOOSELIST 
echo "File chosen: ${file[$v_CHOOSELIST]}" 
+0

Хороший выстрел. Еще лучше: попробуйте найти с выбором (поиск по http://stackoverflow.com/search?q=select+menu+bash) и обновите вопрос, когда вы застряли. –

+0

Некоторые комментарии: ваш скрипт не будет работать так, как ожидалось, если имя файла содержит пробелы. [Не разбирайте ls] (http://mywiki.wooledge.org/ParsingLs) и используйте реальный массив 'files = (* .xml)'. Затем 'for i in '$ {! Files [@]}"; do echo "$ i) $ {files [i]}"; done' –

+2

, но выбор проще: 'PS3 =" Выберите XML-файл сверху для использования: "; выбрать файл в * .xml; do, если [-n "$ file"]; затем перерыв; Fi; сделанный; echo "вы выбрали $ file" ' –