쉘 스크립트에 대한 구성 파일을 생성할 수 있습니까?

쉘 스크립트에 대한 구성 파일을 생성할 수 있습니까?

구성 파일을 사용하여 .sh쉘이나 파일을 생성할 수 있습니까 ?.command

터미널을 통해 웹사이트를 백업하고 일부 데이터를 구성 파일에 저장하고 셸에서 이를 실행하도록 해야 합니다.

예를 들어 사용자 이름, 비밀번호, SSH ID 등이 있습니다.

#!/bin/bash
ssh [email protected] "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"    
ssh [email protected] "mysqldump -u user_admin -ppass database_1 > databasebackup-`date +%Y%m%d`-db.sql"
scp [email protected]:webfilesbackup-date-`date +%Y%m%d`.tar.bz2 ~/backup/
scp [email protected]:databasebackup-`date +%Y%m%d`-db.sql ~/backup/
ssh [email protected] "rm -f webfilesbackup-date-`date +%Y%m%d`.tar.bz2"
ssh [email protected] "rm -f databasebackup-`date +%Y%m%d`-db.sql"

답변1

settings설정을 변수로 사용하여 파일(예: )을 만듭니다 .

username='foo'
pass='bar'
website='baz'
database='yak'

그런 다음 스크립트에서 파일을 소싱하면 변수에 액세스할 수 있습니다.

. settings
echo $username     # <- this will print "foo"

두 번째 "질문"과 관련하여 호스트가 여러 개인 경우 여러 구성 파일을 갖고 스크립트에 인수로 전달된 파일을 소스로 지정할 수 있습니다. 예를 들어, 이라는 구성 파일을 만듭니다 site1.

다음으로 스크립트를 호출하세요../backup.sh site1

. $1               # <- this will load the file "site1"
echo $username     # <- this will print "foo"

백업 스크립트의 경우 이는 다음을 의미합니다.

#!/bin/bash
. $1
ssh [email protected] "tar cjvf webfilesbackup-date-`date +%Y%m%d`.tar.bz2 public_html/"
ssh [email protected] "mysqldump -u $user -p$pass $database > databasebackup-`date +%Y%m%d`-db.sql"
# ... and so on

답변2

다른 옵션은 텍스트 파일을 만들고 while 루프를 사용하여 해당 파일에 한 줄씩 액세스하는 것입니다.

답변3

mkdir -p Example.app/Contents/MacOS`
cp script.sh Example.app/Contents/MacOS/Example

...그렇다면 효과가 있을 것입니다. 이 기사사용자 정의 아이콘을 얻는 방법을 포함하여 더 자세한 지침이 있습니다.

수동으로 작업하지 않고도 정상적으로 실행할 수 있는 응용 프로그램을 구축하는 방법으로 Automator 또는 AppleScript Studio를 고려할 수도 있습니다.

답변4

     # parse the ini like $0.hostname.conf and set the variables
     # place a $0.`hostname -s`.conf file in the same dir as your script
     # set here any VarName=VarValue
     # use ; for comments - you will get host independant conf file 
     # for your bash scripts - [examle usage :][1] 
     doParseIniFile(){
        eval `sed -e 's/[[:space:]]*\=[[:space:]]*/=/g' \
            -e 's/;.*$//' \
            -e 's/[[:space:]]*$//' \
            -e 's/^[[:space:]]*//' \
            -e "s/^\(.*\)=\([^\"']*\)$/\1=\"\2\"/" \
           < $IniFile \
            | sed -n -e "/^\[$IniSection\]/,/^\s*\[/{/^[^;].*\=.*/p;}"`
     }
     #eof function doParseIniFile

관련 정보