Livrar-se da mensagem de erro

0

Eu tenho um script com muitos comandos. Como

#!/bin/sh
mv new /root/
mv old /root/ 
mv foo /code
#many other commands

Se o arquivo 'new' não for encontrado, o bash apresentará uma mensagem de erro: foo: No such file or directory

Eu posso suprimir a mensagem de erro redirecionando toda a saída do stderr para / dev / null

mv foo /code 2>1 /dev/null

Perguntas:
Existe uma maneira de simplesmente fazer isso sem modificar o script inteiro? Existe uma maneira de suprimir toda a mensagem de erro em um script?

    
por The KingMaker 15.11.2013 / 18:15

1 resposta

1

Você pode suprimir todas as mensagens no script, iniciando o script da seguinte maneira:
yourcommand &>filename . Por exemplo. ./myscript &> /dev/null

Ou você pode usar your_script 2> /dev/null

O último redirecionará todas as saídas de stderr para o bitbucket sem necessidade de anexá-las a todos os comandos. Como isso remove todos os erros da saída visível, isso tornará o script muito difícil de ser depurado. Você deve verificar o valor de retorno de cada comando para ver se ocorreu um erro e, opcionalmente, abortar.

Você pode fazer o último com $? .

Por exemplo,

#!/usr/bin/env bash
mv new /root/
if [[ $? -ne 0 ]]; then
   #ignore error since it is not important, or
   #
   # echo "YIPES! CRITICAL FAILURE. Aborting whole script!
   exit 1
fi
Next command here

Etc etc.

    
por 15.11.2013 / 18:32