2012-11-21 1 views
2

Existe-t-il une commande dans shell script similaire à "list" dans tcl? Je veux écrire une liste d'éléments dans un fichier (chacun dans une ligne séparée). Mais, si l'élément correspond à un motif particulier, alors l'élément à côté de lui et l'élément lui-même doivent être imprimés dans la même ligne. Y a-t-il une commande dans un script shell pour cela? Exemple: ma chaîne est comme "exécute la commande abcd.v" Je veux écrire chaque mot dans des lignes séparées d'un fichier mais si le mot est "run" alors abcd.v et run doivent être imprimés la même ligne. Ainsi, la sortie devrait être comme,Scripting Shell pour imprimer la liste des éléments

execute 
the 
command 
run abcd.v 

Comment faire cela dans les scripts shell?

Répondre

0

Voilà comment vous pouvez le faire en bash:

  • Nommez ce script suivant comme list
  • Set à exécutable
  • copier sur votre ~/bin/:

List:

#!/bin/bash 
# list 

while [[ -n "$1" ]] 
do 
    if [[ "$1" == "run" ]]; then 
     echo "$1 $2" 
    else 
     echo "$1" 
    fi 
    shift 
done 

Et voici comment vous pouvez l'utiliser sur l'invite de commande:

list execute the command run abcd.v > outputfile.txt 

Et votre outputfile.txt sera écrit:

execute 
the 
command 
run abcd.v 
0

Vous pouvez accomplir en utilisant le script ci-dessous. Ce ne serait pas une seule commande. Voici une boucle for qui a une instruction if pour vérifier l'exécution du mot clé. Il n'ajoute pas un nouveau caractère de ligne (echo -n).

for i in `echo "execute the command run abcd.v"` 
do 
    if [ $i = "run" ] ; then 
    echo -n "$i " >> fileOutput 
    else 
    echo $i >> fileOutput 
    fi 
done