Comment concaténer stdin à une chaîne, comme ceci ?
echo "input" | COMMAND "string"
et obtenir
inputstring
Comment concaténer stdin à une chaîne, comme ceci ?
echo "input" | COMMAND "string"
et obtenir
inputstring
C'est un peu compliqué, mais c'est peut-être le moyen le plus court de faire ce que vous avez demandé dans la question (utiliser un tube pour accepter les fichiers stdout
de echo "input"
como stdin
à un autre processus / commande :
echo "input" | awk '{print $1"string"}'
Sortie :
inputstring
Quelle tâche essayez-vous exactement d'accomplir ? Plus de contexte peut vous orienter vers une meilleure solution.
Mise à jour - réponse au commentaire :
@NoamRoss
La façon plus idiomatique de faire ce que vous voulez est alors :
echo 'http://dx.doi.org/'"$(pbpaste)"
El $(...)
La syntaxe est appelée substitution de commande . En bref, elle exécute les commandes contenues dans un nouveau sous-shell, et substitue le sa stdout
à l'endroit où le $(...)
a été invoqué dans le shell parent. Donc vous obtiendrez, en fait :
echo 'http://dx.doi.org/'"rsif.2012.0125"
Il existe plusieurs façons d'y parvenir, mais je pense personnellement que la meilleure est la suivante :
echo input | while read line; do echo $line string; done
On peut aussi substituer "$" (caractère de fin de ligne) par "string" dans une commande sed :
echo input | sed "s/$/ string/g"
Pourquoi je préfère le premier ? Parce qu'il concatène une chaîne de caractères à stdin instantanément, par exemple avec la commande suivante :
(echo input_one ;sleep 5; echo input_two ) | while read line; do echo $line string; done
vous obtenez immédiatement la première sortie :
input_one string
et ensuite, après 5 secondes, vous obtenez l'autre écho :
input_two string
D'autre part, en utilisant "sed", il exécute d'abord tout le contenu de la parenthèse et le donne ensuite à "sed", ainsi la commande
(echo input_one ;sleep 5; echo input_two ) | sed "s/$/ string/g"
produira les deux lignes
input_one string
input_two string
après 5 secondes.
Cela peut être très utile dans les cas où vous effectuez des appels à des fonctions qui prennent beaucoup de temps pour se terminer et que vous voulez être continuellement informé de la sortie de la fonction.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.