#!/bin/bash
# useradd1.sh - A simple shell script to display the form dialog on screen
# set field names i.e. shell variables
Name=""
OPAC=""
Intranet=""
mysqlroot=""
password=""
# open fd
# exec 3>&1
exec 3<&0
# dialog --form text height width formheight [ label y x item y x flen ilen ]
# note - 0 - stdin, 1 - stdout, 2 - stderr
# Store data to $VALUES variable
VALUES=$(dialog --ok-label "Submit" \
--backtitle "A script for automated Koha instance creation, developed by ..." \
--title "Automated Koha instance creation - Dashboard" \
--form "Enter the required information.... " \
15 65 5 \
"Enter Koha instance name:" 1 1 "$Name" 1 40 12 0 \
"Enter the port for Koha OPAC:" 2 1 "$OPAC" 2 40 8 0 \
"Enter the port for Koha Intranet:" 3 1 "$Intranet" 3 40 8 0 \
"Enter the root password for MySQL:" 4 1 "$mysqlroot" 4 40 12 0 \
"Set the loging password for Koha:" 5 1 "$password" 5 40 12 0 \
2>&1 1>&3)
# close fd
# exec 3>&-
exec >&3
# exec < $OPAC
# display values just entered
#echo "You have entered"\
#echo "$VALUES"
echo Entering next step...
#Port Declaration:
#echo "Declare Your First PORT Number (except 8005):"
#read OPAC
#echo "Declare Your Second PORT Number:"
#read Intranet
cd
sudo sed -i -e "5 a\Listen $OPAC" -e "5 a\Listen $Intranet" /etc/apache2/ports.conf
exec 3>&-
echo Done....
$OPAC
변수 나 $Intranet
대상 파일을 전달할 수 없습니다 . 그냥 Listen을 인쇄합니다.
답변1
dialog
$OPAC가 제자리에서 업데이트되지 않음: $VALUES 데이터에서 사용자 정보를 추출해야 합니다. 전에 이 코드를 추가하세요.echo Entering next step...
{
read -r Name
read -r OPAC
read -r Intranet
read -r mysqlroot
read -r password
} <<<"$VALUES"
echo === debug info
echo "Name=>$Name<"
echo "OPAC=>$OPAC<"
echo "Intranet=>$Intranet<"
echo "mysqlroot=>$mysqlroot<"
echo "password=>$password<"
echo ===
이에 만족한다면 디버그 echo
명령을 주석 처리하세요.
이 문제를 해결하는 또 다른 방법은 readarray
명령을 사용하여 대화 상자의 출력을 캡처하는 것입니다. 이는 데이터를 단일 문자열에 넣지 않고 행당 하나의 값을 사용하여 0부터 시작하는 인덱스 배열에 넣습니다.
readarray -t data < <( dialog ... 2>&1 1>&3 )
echo "debug: user data"
declare -p data
# ...
sudo sed -i -e "5 a\Listen ${data[1]}" -e "5 a\Listen ${data[2]}" /etc/apache2/ports.conf