여기 제 생각에 완성되지 않은 스크립트가 있습니다. 제 목표는 스크립트를 나열하여 목록에 있는 선택된 .sh 파일을 실행할 수 있도록 하는 것입니다. 미리 도움을 주셔서 감사합니다. 태그 "1"이 나열된 .sh 파일의 이름으로 인식될 수 있기 때문에 만들기( optionone= 1 )를 시도했습니다. 그래서 내 결과 영역에서 result=$(./${optionone})을 시도했습니다.
실행하기 위해 입력하고 파일 이름을 입력하고 싶지 않습니다. 제어판처럼 파일 이름을 입력하면 자동으로 실행되는 제어판처럼 쉽게 만들려고 노력하고 있습니다.
`#!/bin/bash
let i=0 # define counting variable
W=() # define working array
while read -r line; do # process file by file
let i=$i+1
W+=($i "$line")
done < <( ls -1 /home/peder/Desktop/scripts )
FILE=$(dialog --title "List of scripts" --menu "Chose one" 24 80 17 "${W[@]}" 3>&2 2>&1 1>&3) # show dialog and store output
clear
optionone= 1
case $FILE in
0 )
clear
echo "Program terminated."
;;
1 )
result=$(./${optionone})
display_result "Scripts"
;;
2 )
result=$(C^)
;;
esac
done
` 사진 1:
그림 2:
답변1
소개
다음 파일 세트는 모두 자체 디렉토리에 있을 때 저에게 효과적입니다. 메뉴 시스템을 좀 더 일반화하고 싶을 수도 있습니다.
메뉴
#!/bin/bash
# this simplified version works with files in its own directory
i=0 # define counting variable
wa=() # define working array
while read -r line; do # process file by file
let i=$i+1
wa+=($i "$line")
done < scripts
result=$(dialog --title "List of scripts" --menu "Choose a script from the list" 24 80 17 "${wa[@]}" \
3>&2 2>&1 1>&3) # show dialog menu
#clear
if [ "$result" == "" ]
then
echo "Quit"
else
item=$(($result*2-1))
# test output (to be removed later on)
echo "$item"
echo "${wa[$item]}"
read -p "Press Enter to continue or ctrl C to quit"
# end of test output
"${wa[$item]}" # execute selected item
fi
스크립트
./test0
./test1
테스트0
#!/bin/bash
echo $0 start
echo $0 end
테스트1
#!/bin/bash
echo $0 start
echo $0 end