Eu sou capaz de executar um código do terminal, mas o mesmo comando dando erro quando executado em um script de shell

0

Sou novo no Unix e shell scripts, sou capaz de executar um código a partir do terminal, mas o mesmo comando dando erro quando executado em um script de shell.

#!/bin/bash
diff <((sort doc1) <(sort doc2)) | grep -x '.\{6\}' >sample.txt

Estou recebendo este erro quando executo o shell:

/App$ sh filediff.sh 
filediff.sh: 4: filediff.sh: Syntax error: "(" unexpected
    
por sriram 21.12.2016 / 07:40

2 respostas

4

Quando você executa seu comando diff no shell normal, você está usando o shell atual (principalmente o bash).

Você recua para usar um shell bash para seu script, mas se você chamar seu script com "sh filediff.sh", chamará sh-Shell, que é um pouco diferente do bash.

Você pode chamar seu script com

bash filediff.sh

ou você pode torná-lo executável com

chmod +x filediff.sh

e ligue para

./filediff.sh
    
por 21.12.2016 / 07:58
-1

O comando diff trabalha para analisar dois arquivos e imprime as linhas diferentes. Você não está fornecendo arquivos de entrada apropriados para o comando diff:

O script de trabalho modificado simples é:

sort doc1 | tee tempdoc1
sort doc2 | tee tempdoc2
diff tempdoc1 tempdoc2 | grep -x '.\{6\}'  > sample.txt
echo "Following is difference:"
cat sample.txt
    
por 21.12.2016 / 08:15