Puis-je créer un fichier de configuration pour un script shell?

Est-il possible de créer un shell .sh ou .command fichier .command avec un fichier de configuration?

J'ai besoin de sauvegarder des sites Web via Terminal et pouvoir mettre des données sur des fichiers de configuration et faire en sorte que le shell l'exécute.

Par exemple, le nom d'utilisateur, le mot de passe, ssh id, et cetera.

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

Créez un fichier (p settings Ex. settings ) avec vos paramètres en tant que variables:

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

Ensuite, créez le fichier à partir de votre script et vous pourrez accéder aux variables:

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

En ce qui concerne votre deuxième "question", si vous avez plusieurs hôtes, vous pouvez simplement avoir plusieurs fichiers de configuration et générer celui qui est passé comme argument sur votre script. Par exemple, créez un fichier de configuration appelé site1 .

Appelez votre script avec ./backup.sh site1

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

Avec votre script de sauvegarde, cela signifierait:

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

L'autre option consiste simplement à créer un fichier texte et à utiliser une boucle while pour accéder à ce fichier ligne par ligne.

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

… et cela fonctionnera. Cet article contient des instructions plus détaillées, y compris la façon d'obtenir des icônes personnalisées.

Vous pouvez également consulter Automator ou AppleScript Studio comme moyen de créer des applications qui peuvent fonctionner correctement, sans avoir à le faire à la main.

  # 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