Como anexar vários arquivos em um único arquivo e depois enviá-los por e-mail?

0
if [[ unix = unix ]]
then
echo "they are same" > a.txt
else 
echo "they are not same" > b.txt
a.txt>>b.txt>c.txt
mail -s "comparison" [email protected] < /home/c.txt

Eu só quero que o corpo do email indique se eles são iguais ou se não são iguais, mas não estou obtendo a saída esperada.

Um dos arquivos, a.txt ou b.txt é reportado como command not found .

    
por Vimal Kumar 27.12.2017 / 10:36

2 respostas

1

Não está claro para mim qual é a sua intenção no seu roteiro, mas responderei à sua pergunta principal com o título "Como adicionar vários arquivos em um único arquivo?" ...

Os operadores de redirecionamento ( > , >> , < , etc.) não funcionam apenas com arquivos. Eles trabalham com as entradas e saídas de comandos. foo > bar não significa "sobrescrever bar com o conteúdo de foo ". Isso significa "executar o comando foo e sobrescrever bar com sua saída". E foo >> bar significa "executar o comando foo e anexar sua saída ao conteúdo atual de bar ". Além disso, você não pode encadear estes. foo > bar > baz não significa nada.

Se você quiser concatenar o conteúdo de vários arquivos e anexar o resultado a outro arquivo, convém usar o operador >> em conjunto com o comando cat :

cat [OPTION]... [FILE]...

Portanto, usando seus nomes de arquivos, para anexar os itens a.txt e b.txt a c.txt , você pode fazer isso:

cat a.txt b.txt >> c.txt

Já que você perguntou sobre algo semelhante em um comentário, esses dois comandos são equivalentes à versão de linha única:

cat a.txt >> c.txt
cat b.txt >> c.txt
    
por 27.12.2017 / 11:11
0

Isso pode ser muito simplificado:

compare='not '
[[ unix = unix ]] && compare=''
echo "they are ${compare}the same" | mail -s "comparison" [email protected]

Isso define not (com um espaço à direita) como o valor padrão da variável $compare . Se as duas strings forem iguais, definirá $ compare como uma string vazia. Em seguida, imprime a mensagem com a variável incorporada e a envia por e-mail.

    
por 27.12.2017 / 11:20