2010-02-01 5 views
1

j'ai script bash, commesolaris echo "[" problème caractère


for i in `echo a [ matched.lines` 
do 
echo $i 
done 

pourquoi la sortie de ce script ci-dessous

un

[

adapté. lignes


je veux texte de sortie comme il est

un [matched.lines


Comment puis-je faire

grâce à l'aide

+0

Pourquoi utilisez-vous la boucle externe au lieu d'une seule commande? 'echo a [matched.lines' –

+0

non ce n'est que des fins de démonstration ici, j'ai fichier à lire avec plusieurs lignes qui comprend" ["si le code a la boucle – soField

+0

Le crochet n'est pas le problème ici. Décrivez plus de ce que vous voulez vraiment faire. Fournir un meilleur exemple plus complet. –

Répondre

2

Le scénario résonne chaque jeton séparément. Utilisez echo -n $i à l'intérieur de do ... done.

+0

mais cette fois-ci il n'y a pas de nouvelle ligne en sortie :( – soField

+1

ajoute simplement un 'écho 'final au programme – ShiDoiSi

+0

que voulez-vous dire par écho de fin? – soField

0

j'ai remplacé « » caractères à « » avec sed remplacer et il n'y a pas de nouvelle ligne globale sur la sortie de remerciements de script pour l'aide

0

lire un fichier shell en utilisant, utilisez en lecture en boucle

while read -r loop 
do 
case "$line" in 
    *]*) echo $line;; 
esac 
done <"file" 
0

Désolé mais ça ne va pas faire ce que vous voulez. Votre boucle for utilise un espace comme délimiteur de ses arguments. Cela fera écho à chacun des objets sur une ligne séparée. Ajouter un -n ne fonctionne pas ici car vous n'obtiendrez pas le \ n à la fin de la ligne. Honnêtement, je ne vois pas ce que vous essayez de faire ici. Si vous voulez juste faire écho à ce « un [matched.lines » comme une chaîne, vous pouvez le faire:


for i in "a [ matched.lines";do 
    echo $i 
done 

Mais je sens que vous allez mal comprendre comment utiliser une boucle for ....