2016-08-23 2 views
0

j'ai une commande et conduite dans différentes conditions comme suit,commande dans terminal v.s. bash.sh

cat $txt | grep -v "\/\*" | awk -F$'\t' '{if ($16=="N") print $0}' | awk -F$'\t' '{if ($48=="Y" || $48==".") print $7}' 

cette commande fonctionne parfaitement dans le terminal

Cependant, quand je inclure la commande dans un bash.sh, il ne fonctionne pas du tout. J'ai créé un test.sh Le script ressemble à ceci:

#!/bin/bash  
txt=file.txt 
cat $txt | grep -v "\/\*" | awk -F$'\t' '{if ($16=="N") print $0}' | awk -F$'\t' '{if ($48=="Y" || $48==".") print $7}' >> output.txt 

Ensuite, j'utilise simplely

sh test.sh 

Il a généré un sortie.txt, mais ce n'est pas toute information en sortie. txt

Quelqu'un a-t-il une idée de ce qui est différent?

+3

Qu'est-ce qui se passe quand vous le mettez dans un script? A quoi ressemble le script? Quelles erreurs ou messages (le cas échéant) obtenez-vous? Comment essayez-vous d'exécuter le script? –

+0

Avez-vous essayé le débogage en définissant 'set -x' au début de votre script? – Inian

+1

La façon la plus simple de déboguer votre script pourrait être de faire une chose à la fois, en commençant par quelque chose que vous ne faites pas maintenant: Faire écho au contenu de '$ txt'. Continuez en faisant simplement 'cat $ txt'. Puis continuez à faire 'cat $ txt | grep ... '. Et ainsi de suite, en vérifiant que chaque chose fait ce qu'elle est censée faire. Une fois que vous trouvez quelque chose que vous n'attendez pas, vous pouvez regarder de plus près. –

Répondre

2

Très probablement sh n'est pas bash - courir comme bash test.sh-$'\t' est bash et peut ne pas fonctionner dans d'autres coquilles - aussi awk -F'\t' fonctionne aussi bien

+0

Même si' sh' est un lien symbolique vers Bash, il fonctionnera en mode POSIX lorsqu'il est appelé 'sh'. – tripleee

+0

En effet, quand j'essaye bash au lieu de sh, cela fonctionne parfaitement. – user3631848

+0

En effet, quand j'essaye bash au lieu de sh. Cela fonctionne parfaitement. Je vous remercie. Maintenant, je réalise qu'il n'y en a pas deux exactement pareil. – user3631848