Могу ли я создать файл конфигурации для скрипта оболочки?

Могу ли я создать файл конфигурации для скрипта оболочки?

Можно ли создать .shоболочку или .commandфайл с файлом конфигурации?

Мне нужно сделать резервную копию веб-сайтов через терминал и иметь возможность поместить некоторые данные в файлы конфигурации, а также заставить оболочку выполнить их.

Например, имя пользователя, пароль, идентификатор SSH и т. д.

#!/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

Связанный контент