메뉴 대화 상자가 있는 쉘 스크립트에서 쉘 스크립트를 어떻게 실행합니까?

메뉴 대화 상자가 있는 쉘 스크립트에서 쉘 스크립트를 어떻게 실행합니까?

여기 제 생각에 완성되지 않은 스크립트가 있습니다. 제 목표는 스크립트를 나열하여 목록에 있는 선택된 .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

관련 정보