[PYTHON] Remarque 2 pour intégrer le langage de script dans un script bash

Couper

Suite ceci que j'ai écrit il y a longtemps.

Oh, je ne parlerai pas du comportement sous Windows.

perl et rubis

A


$ cat hoge.pl
#!/bin/bash
find . -type f | perl -x $0
exit 0

#!/usr/bin/env perl -ln
print ;

$ perl hoge.pl
./bar
./foo
./hoge
.
.
.

1. perl interprète l'interpréteur.

Si la ligne #! Ne contient pas les mots "perl" ou "indir", le programme spécifié après #! Sera exécuté à la place de l'interpréteur Perl. C'est un peu bizarre, mais cela fonctionne pour ceux qui utilisent une machine qui ne peut pas faire # !; Si vous dites que le SHELL que vous utilisez pour votre programme est / usr / bin / perl, alors Perl est correct. Parce que ça lance l'interprète. (Extrait de perlrun)

En d'autres termes

python


$ cat hoge.rb
#!/usr/bin/env ruby
puts("ruby")
$ perl hoge.rb
ruby
$ cat hoge.sh
#!/bin/bash
echo bash
$ perl hoge.sh
bash

2. ruby passe à ruby si plusieurs interprètes sont écrits.

Si le script spécifié sur la ligne de commande est un fichier commençant par «#!» Et que la ligne ne contient pas la chaîne «ruby», la ligne est ignorée. Si la chaîne suivant #! Trouve une ligne contenant la chaîne ruby, exécutez la ligne sous cette ligne en tant que script Ruby. (Cité de rdoc)

B


$ cat hoge2.sh
#!/bin/bash
echo bash
ruby -x $0
exit 0
#!/usr/bin/env ruby
puts("ruby")

dans le cas de,

python


$ ruby hoge2.sh
ruby

3. perl et ruby peuvent également retarder le début de l'analyse avec -x.

Si vous spécifiez le commutateur> -x, il recherche d'abord une ligne contenant les chaînes #! Et "perl" et commence l'analyse à partir de là. Ceci est utile lorsque vous souhaitez incorporer un programme dans un texte volumineux et l'exécuter. (Dans ce cas, la fin du programme doit être indiquée par le jeton END.)

(Extrait de perlrun)

Pour ruby, la même chose est clairement indiquée dans rdoc.

Par conséquent, le code de A tient.

même en rubis B

Exécutez B avec bash.


$ bash hoge2.sh
bash
ruby

Donc vous pouvez aussi dire ceci.

python


$ cat hoge3.sh
#!/bin/bash
echo bash
perl -x $0
ruby -x $0

exit 0

#!/usr/bin/env perl
print("perl\n") ;

__END__

#!/usr/bin/env ruby
puts("ruby")

__END__

Courir avec bash


$ bash hoge3.sh
bash
perl
ruby

Exécuter avec perl


$ perl hoge3.sh
bash
perl
ruby

Courir avec du rubis


$ ruby hoge3.sh
ruby

Postscript

J'ai écrit ça

Si vous le relisez, dans le cas du rubis, il n'y a aucune signification de l'existence de -x? À quoi ça sert ... peut-être pour Windows ...

tsuiki.sh


#!/bin/bash
ruby -x $0
exit 0
#!/usr/bin/env ruby
puts("ruby")

^D            #Contrôle+V, Contorol+Intégré avec D(terminal mac)

puts("test")
$ bash tsuiki.sh
ruby
$ ruby tsuiki.sh
ruby

Pour python

Dans le cas de python, bien qu'il y ait -x, il est clairement indiqué que "une seule ligne est ignorée" avec des restrictions considérables.

-x (original) Ignorez la première ligne de source pour utiliser #! Cmd au format non-Unix. Ceci est pour les hacks DOS uniquement. (Cité de Document)

Cependant, si vous en faites trop,

$ cat hoge4.sh
find . -type f | python -x  $0 ; exit 0
#!/usr/bin/env python
import sys
for line in sys.stdin:
   print(line.strip())

Même chose que A


$ bash hoge4.sh
./bar
./foo
./hoge
.
.
.

Ce n'est pas impossible de faire quelque chose comme ça.

Recommended Posts

Remarques sur l'intégration du langage de script dans les scripts bash
Remarque 2 pour intégrer le langage de script dans un script bash
Changer la liste dans l'instruction for
Exécuter l'interpréteur Python dans le script
Lançons le script Bash en Java
Une note utile lors de l'utilisation de Python après une longue période
Utilisez un langage de script pour une vie confortable en C ++
Créer un fichier qui peut être exécuté dans le langage de script
Enregistrer une tâche dans cron pour la première fois
Vérifiez s'il s'agit d'Unix dans le langage de script
Vérifiez s'il s'agit d'Unix dans le langage de script
Intégration du langage machine en langage C
Remarque sur le comportement par défaut de collate_fn dans PyTorch
Comment implémenter provisoirement une barre de progression dans un langage de script
Créez un script pour votre compétence Pepper dans une feuille de calcul et chargez SayText directement à partir du script
Traitez les fichiers du dossier dans l'ordre avec le script shell
[Note] Un script shell qui vérifie l'utilisation du processeur d'un processus spécifique dans une boucle while.
[Note] Importation de fichiers dans le répertoire parent en Python
Utilisez un langage de script pour une vie C ++ confortable-OpenCV-Port Python vers C ++ -
J'ai écrit un script qui divise l'image en deux
Utilisez un langage de script pour une vie C ++ confortable 5 - Utilisez l'environnement intégré de Spyder pour vérifier les données numériques -
Made Gomi, un outil de corbeille pour RM en langue Go
Enregistrez le fichier d'authentification Pydrive dans un répertoire différent du script
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Changez l'invite de bash en une couleur simple pour une visualisation facile
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
Langage de programmation dont les jeunes auront besoin à l'avenir
Remarque à propos de get_scorer de sklearn
Obtenez le chemin du script en Python
Un petit script pour l'autodéfense des logiciels malveillants
Changer la langue affichée dans Django 1.9
Démarrez avec SQLite dans un langage de programmation
Notes pour écrire du code de type Python
Une histoire d'essayer d'améliorer le processus de test d'un système vieux de 20 ans écrit en C
Ajouter des points forts de la syntaxe du langage Kv à Spyder dans Python IDE
Utilisons un langage de script pour une vie C ++ confortable 2 Générer automatiquement une source C ++
Utilisons le langage de script pour une vie confortable en C ++ 4 - Utilisons la propre bibliothèque de C ++ à partir du langage de script -
Lignes directrices pour se réincarner dans le monde du développement de programmation Linux (langage C / C ++)
Écrivain AtCoder J'ai écrit un script qui regroupe les concours pour chaque écrivain
Utilisez un langage de script pour une vie confortable en C ++ 3-Laissez le graphique à matplotlib-
Afficher le chemin complet (chemin absolu) d'un fichier dans un répertoire sous Linux Bash
Ce que les utilisateurs de Java ont pensé d'utiliser le langage Go pendant une journée
Avec LSTM + Embedding, j'ai réaffirmé l'importance du prétraitement en PNL tout en créant un modèle pour discriminer les émotions des tweets.
Le langage de programmation le plus recherché en 2020
Ecrire le test dans la docstring python
Découvrez les dates du tournoi fou
Matériel de l'approche pour l'intégration dans ARM
Retour sur 2016 dans le langage Crystal
MongoDB avec Python pour la première fois
Obtenez un jeton pour conoha avec python
Dessiner des graphiques dans le langage de programmation Julia
Utilisez Python 3 Subprocess.run () dans le script CGI
Un mémo que j'ai essayé le tutoriel Pyramid
Disposez les nombres en forme de spirale
Utilisez autre chose qu'une chaîne <br> pour la clé <br> dict en Python
J'ai recherché les compétences nécessaires pour devenir ingénieur web avec Python
Script Python pour obtenir une liste d'exemples d'entrée pour le concours AtCoder
Transformez plusieurs listes avec l'instruction for en même temps en Python