Как добавить пункт меню диалога из файла? - PullRequest
0 голосов
/ 27 января 2019

Я пишу сценарий в Linux, пока пользователь не нажмет кнопку «ноль», сценарий будет принимать имя файла и путь от dialog --input (например, в следующем формате: /etc/bob), затем он будет перечислять местоположениядля пользователя, чтобы выбрать с dialog --menu.Затем пользователь выбирает элемент в меню, скрипт ищет файл, и, если файл существует, скрипт копирует выбранный файл в домашний каталог пользователя.

На данный момент он выбрасывает Error: Expected 2 arguments, found only 1.

Сначала пользователь вводит количество файлов, которые он хочет найти, так что это число будет установлено на шаге цикла for и в dialog --menu как количество элементов ($nu).Затем dialog --inputbox берет местоположение пользователя и помещает его в loc, затем в asd;после этого в db.В конце, dialog --menu берет запись строки с head и tail из файла db.

Работает для одного, иногда 2 или даже 4 элементов;но затем он останавливается

Даже когда я помещаю dialog --menu из цикла for, в цикл while - это тоже не работает.

Как исправитьпроблема?

wh=1
while [ $wh -ne 0 ]
do
dialog --inputbox "Please enter numbers of FILE you want to search" 8 60         2>/tmp/num
nu=`cat /tmp/num`

for i in `seq -w 1 $nu` #((i=1;i<=nu;i++));do

dialog --title "Search File" --inputbox "Please enter File name and Location in following Format to search .. [EX. /etc/passwd" 8 60 2> loc    #lo-$i
asd=`cat loc`
echo $asd >> db

dialog --menu "test" 15 50 $nu "1" `cat db | head -n 1`i "2" `cat db | head -n 2 | tail -n 1` "3" `cat db | head -n 3 | tail -n 2` 2>p 1>secl

done

done

1 Ответ

0 голосов
/ 04 февраля 2019

До сих пор я придумал это, и все в порядке. Но проблема в том, что я не могу понять, как определить, что набрал пользователь и какой файл мне искать или найти команду поиска.

Я могу проверить пользовательский ввод с 4 или 5, если, но что, если пользователь в начале скрипта вводит 6 7 или 8 путь?

, пожалуйста, помогите - заранее спасибо

вывод такдалеко

clear

wh=1
while [ $wh -ne 0 ];do

    echo "Please enter FileName and Location to search for."
    read loc
    if [ $loc = 0 ];then
    wh=0
    fi
    echo "$loc" >> loc
done
clear
let lc=`wc -l < loc`-1
wz=`cat loc | head -n $lc`
echo "$wz" > eloc

while true;do
clear
echo "$(tput setaf 2)=====================================================================$(tput sgr 0)"
echo "$(tput setaf 2)========================== list of files ============================$(tput sgr 0)"
echo "$(tput setaf 2)=====================================================================$(tput sgr 0)"


for ((i=1;i<=$lc;i++));do
    echo -e " $i : "`cat eloc | head -n $i | tail -n 1` #print each line
    eval d$i=`cat eloc | head -n $i | tail -n 1` #put each line in a variable
done

echo "$(tput setaf 2)============================ q to exit ==============================$(tput sgr 0)"
echo "$(tput setaf 2)== if file is existed, will be copy to current user Home directory ==$(tput sgr 0)"

echo -e "\n"
echo -e "Enter your selection :\c"
read selec


#--------------------------------------------
if [[ "$selec" == q ]];then break; fi
#--------------------------------------------
if [[ "$selec" == "" ]];then
echo "$selec: not a valid selection."
continue
fi
#--------------------------------------------

echo -e "Press enter to continue \c"
read input
done

rm -Rf loc eloc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...