2017-10-11 1 views
0

Si je lance cat <(echo 'hello') dans le [nom d'hôte root @] #, il montre correctementchat <(echo « bonjour ») peut fonctionner, mais ne peut pas fonctionner en mode script shell

Mais si je tourne de ce qui précède ci-dessous le script test.sh:

#!/bin/sh 
cat <(echo 'hello') 

et exécutez sh -x test.sh, il me rappellerait des erreurs ci-dessous:

./test.sh: line 3: syntax error near unexpected token `(' 
./test.sh: line 3: `cat <(echo 'hello')' 

raison demander c'est parce que je suis ce thread (la réponse verte un), le bal pt la même erreur.

+2

La bourne shell Posix 'sh' ne prend pas en charge la substitution de processus (' <() '), vous devez utiliser shell Boune de nouveau' bash' pour le soutenir. – Inian

+0

Certainement si vous avez 'bash' installé (vérifiez en faisant' quel bas' ou 'echo $ SHELL'). Changez la première ligne à '#!/Bin/bash' et essayez d'exécuter le même script que' bash -x test.sh' – Inian

+0

si vous avez vraiment besoin d'utiliser #!/Bin/sh' alors vous devrez étendre votre Q à un cas d'utilisation réel, comme 'cat <(echo hello)' n'a pas beaucoup de sens. pourquoi ne pas juste 'echo hello' ou supposer que vous pensez à un processus en alimentant un autre, utilisez un pipeline, c'est-à-dire' echo $ RANDOM \ * 5 | bc'? Bonne chance. – shellter

Répondre

1

Il semble que vous utilisez la syntaxe spécifique à Bash dans votre script, vous devez changer la ligne de tralala à quelque chose comme:

#!/bin/bash 

et si vous voulez appeler le programme comme vous faisiez-vous devriez exécutez:

bash -x test.sh 
+0

Merci beaucoup @David, ça marche après le passage à bash –