in php: Comment faire la même chose dans un script Bash? p> p>
4 Réponses :
php à bash?
Veuillez inclure $ entrée et $ de variables de sortie dans votre ligne Bash
@simpatico, vous aurez vraiment besoin d'apprendre comment fonctionne la coquille. Il n'y a pas de "variables d'entrée" et de "variables de sortie". Vous devez piloter les valeurs dans le programme appelé. Vous devrez apprendre la programmation Shell, mais ce site ne consiste pas à apprendre à programmer.
Ou: J'ai appris comment la coquille travaille et écrit plusieurs scripts Bash, mais il y a une lacune à ma connaissance que je demande humblement ici. Reconnaissant à ceux qui connaissent et répondent.
recherchez-vous $ {paramètre / modèle / chaîne} code>) et
$ {paramètre , modèle} code>)? Si tel est le cas, vous en trouverez plus dans
homme bash code>
sous Le sujet de $ a="FOO BAR BLUB"
$ tmp=${a// /_}
$ echo ${tmp,,}
foo_bar_blub
Micha, j'ai cité votre dernière phrase dans ma réponse.
Nécessite Bash4 (testé avec 4.3.48).
En supposant que vous ne voulez jamais de caractère majuscule dans la valeur de la variable Lorsque la variable est attribuée une valeur, tous les majuscules sont convertis en minuscules. P>
blockQuote> li>
BTW: il y a aussi MISE À JOUR: En revisitionnant, j'ai réalisé que ma réponse correspond au titre de la question de la question, mais pas le code PHP. Dans l'exemple PHP, tous les caractères qui sont Voici un code qui correspond également à ce que: P> sortie code>, je proposerais ce qui suit: p> xxx pré>
Typeset -L sortie code>: Définit la variable pour être minuscule uniquement. De
homme bash code>: p>
sortie = $ {entrée /// / _} code>: remplace tous les espaces avec un soulignement. P> Li>
ul>
TypeetSet -u variable code> pour le définir comme "tout uplase".
Voir
Man Bash Code>. P>
a-z code> sont remplacés par un soulignement. Donc, si
entrée code> contient un côlon ou une virgule, ceux-ci seraient également remplacés par le soulignement. P>
typeset -l output
output=${input//[^a-z]/_}
Merci de m'avoir appris sur typeet -l code>!
Dans Bash-3.2, je reçois "Typeset: -L: Option non valide" et à l'homme bash, les options sont uniquement - -a, -f, -i, -r, -t et -x
Mise à niveau vers Bash-4.4 Il fonctionne
@simpatico mise à jour à Bash 4. * était une bonne idée. La plupart des gens ici assumeront que nous parlons de Bash4 en répondant aux questions. BTW: Bash5 est sorti il y a quelques jours, mais j'attendrais la mise à jour de cela.
@ user7369280, la dernière valeur par défaut de MacOS est toujours bash-3.2. Le dernier sur MacPorts est de 4,4 et pour l'utiliser, le script doit commencer avec #! / USR / bin / env bash
Ceci fonctionne: alternativement, an@user7369280's réponse fonctionne aussi depuis Bash4 +. P> P> $ entrée code> est simplement une variable définie dans le script Bash. p>
Je pense que vous pouvez exécuter PHP en mode console où il prend une entrée de Stdin et des impressions sur stdout
Alternativement, utilisez Perl:
perl -wple '$ _ = LC $ _; $ _ = ~ s / [^ a-z] / _ / g ' code>
Cela ne fonctionne pas: $ SORTIE = $ INPUT >> PHP -R PREG_REPLACE ("/ [^ A-Z] /", "_", Strtolower (Fgets (STDIN)));
Que pensez-vous que votre extrait à faire? Ce n'est pas du tout une syntaxe shell valide. Peut-être que votre question est de savoir comment envoyer des informations sur Stdin à un programme de la coquille?
La question semble être: quelles sont les commandes équivalentes pour atteindre le même effet. Je trouve le tout à fait adéquat et je suis surpris d'où vient toute la confusion.
Veuillez consulter Comment créer un exemple minimal, complet et vérifiable .