[Bash] Obtenez la puissance de python de bash en utilisant la documentation ici

introduction

L'analyse des fichiers avec shell est assez pénible. Vous pouvez faire de votre mieux pour écrire à l'aide d'expressions régulières, mais la plupart du temps, vous oubliez le contenu. Il y a eu un cas où j'ai pu me sortir du problème des expressions régulières à l'aide de modules python. C'est le record de l'époque.

environnement

Que dois-je faire spécifiquement?

Utilisez la documentation d'entendre de bash pour verser du code python dans des commandes python.

shellscript


python <<EOF

#code python

EOF

Je n'écrirai pas sur le document d'entendre de bash ici. Si vous voulez en savoir plus, veuillez vérifier par vous-même.

échantillon

Voici un exemple. C'est un script shell qui utilise le module configparser de python pour analyser le fichier de configuration de mysql et se connecter à MySQL.

connect_mysql.sh



#!/usr/bin/env bash
#
# Connect to MySQL

declare -r COLOR_RED="\e[33;41;1m"
declare -r COLOR_OFF="\e[m"
declare -r DB_CONFIG_PATH='path/to/database.conf'
# check file exists or not
if [ ! -f "${DB_CONFIG_PATH}" ]; then
  echo -e "${COLOR_RED}[error] \"${DB_CONFIG_PATH}\" does not exist.${COLOR_OFF}"
  exit 1
fi

declare -r SECTION=$1
# check argument
if [ -z "$SECTION" ]; then
  echo -e "${COLOR_RED}[error] Please set section name as command argument.${COLOR_OFF}"
  exit 1
fi


#######################################
# Parse DB config by python
# Globals:
#   DB_CONFIG_PATH
#   SECTION
# Arguments:
#   None
# Returns:
#   None
#######################################
function parse_ini_file () {

  python3 <<'EOF' - "${DB_CONFIG_PATH}" "${SECTION}"

import sys
import configparser

file_path    = sys.argv[1]
section_name = sys.argv[2]

config = configparser.ConfigParser()

config.read(file_path)

try:
    details = config[section_name]
except KeyError:
    sys.exit(1)

db_option = \
    '[client]\\nhost={host}\\nport={port}\\ndatabase={database}\\nuser={user}\\npassword={password}\\n'\
    .format(\
        host=details['host'],\
        port=details['port'],\
        database=details['database'],\
        user=details['user'],\
        password=details['password']\
    )

sys.stdout.write(db_option)
sys.exit(0)

EOF


}

db_option=$(parse_ini_file)

if [ $? -ne 0 ]; then
  echo -e "${COLOR_RED}[error] Section \"${SECTION}\" does not exist in config file.${COLOR_OFF}"
  exit 1
fi

mysql --defaults-extra-file=<(echo -e ${db_option})

Il semble que vous puissiez faire quelque chose comme argument de nom de fichier python 1 argument 2 même dans le document d'audience en faisant ce qui suit.


python3 <<'EOF' - "${DB_CONFIG_PATH}" "${SECTION}"
...
EOF

en conclusion

J'espère que cela aide quelqu'un.

Recommended Posts

[Bash] Obtenez la puissance de python de bash en utilisant la documentation ici
Je veux utiliser jar de python
Utilisez Thingsspeak de Python
Utiliser fluentd de python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Étude de Python Hour7: Comment utiliser les classes
Utilisez MySQL depuis Python
Utiliser MySQL depuis Python
Je veux utiliser le solveur ceres de python
Utilisez BigQuery depuis Python.
Utilisez Tor pour vous connecter depuis urllib2 [Python] [Mac]
Python: décompressez depuis l'entrée standard en utilisant zipfile
Utilisez os.getenv pour obtenir des variables d'environnement en Python
Utilisez mecab-ipadic-neologd de Python
Comment utiliser le mode interactif python avec git bash
Je voulais utiliser la bibliothèque Python de MATLAB
Publier de Python vers Slack
python3: Comment utiliser la bouteille (2)
Flirter de PHP à Python
[Python] Comment utiliser la liste 1
Utiliser MySQL depuis Anaconda (python)
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Utilisez l'API e-Stat de Python
Comment utiliser les octets Python
Appuyez sur REST en Python pour obtenir des données de New Relic
Appelez Matlab depuis Python pour optimiser
Utilisez httpie à partir de Windows git bash
Python: comment utiliser async avec
Utiliser la PNL Stanford Core à partir de Python
Comment utiliser SWIG de WAF
Lien pour commencer avec python
Obtenir des données de Quandl en Python
[Python] Comment utiliser la série Pandas
Publication de Python sur la chronologie Facebook
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser SQLite en Python
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Lire et utiliser des fichiers Python à partir de Python
Comment obtenir la version Python
Utiliser de force Google Translate à partir de python
Comment démarrer avec Python
Connectez-vous à la base de données utf8mb4 à partir de python
[Introduction à Python] Utilisons les pandas
Python (de la première fois à l'exécution)
Utilisez l'API kabu Station® de Python
Publier une image de Python sur Tumblr
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python