2011-10-12 2 views
0

Le programme est très simple:Une erreur déroutant d'exécuter des commandes dans foreach csh

#!/bin/csh -f 
foreach path (fileA.txt fileB.txt) 
    wc -l $path 
    grep "test" $path 
end 

Cependant, la sortie est:

fileA.txt/wc: Not a directory. 
fileA.txt/grep: Not a directory. 
fileB.txt/wc: Not a directory. 
fileB.txt/grep: Not a directory. 

Alors quel est le problème avec le code et ce qui est la bonne façon de le faire?

Répondre

0

Vous ne devez jamais utiliser le chemin comme nom de variable générique dans C-Shell car il contient les répertoires de recherche actuels pour que le shell trouve les programmes de commande.

Cela fonctionne beaucoup mieux que votre code:

#!/bin/csh -f 
foreach mypath (fileA.txt fileB.txt) 
    wc -l $mypath 
    grep "test" $mypath 
end