GNU/Linux >> Znalost Linux >  >> Linux

Nedaří se vám získat správný výstupní kód ze skriptu?

Mám skript, který se připojuje ke vzdálenému serveru přes SFTP a získává odtud nějaký soubor. Můj skript vypadá takto:

/usr/bin/sftp [email protected] <<EOF
lcd /dir1/dir2/dir3
cd /rsdir1/rsdir2/rsdir3
get file_pattern`date -d "last month" +%m%Y`.csv
EOF
rc=$?
        if [[ $rc != 0 ]]
           then
        echo "Error occured getting file and the script abended with error code $rc" `date "+%Y-%m-%d-%H.%M.%S"`
            exit 1
    else
    echo "Successfully transferred the file" `date "+%Y-%m-%d-%H.%M.%S"`
        fi

I když skript nenajde soubor se vzorem, přejde do jiného část skriptu a dává mi výstup na obrazovce jako

Connecting to remote.server.com...
sftp> lcd /dir1/dir2/dir3
sftp> cd /rsdir1/rsdir2/rsdir3
sftp> get file_pattern032014.csv
Couldn't stat remote file: No such file or directory
File "/rsdir1/rsdir2/rsdir3/file_pattern032014.csv" not found.
Successfully transferred the file YYYY-MM-DD-24HH.MI.SS 

Nějaké rady, co bych tady mohl dělat špatně?

Přijatá odpověď:

Máte správný návratový kód, relace sftp byla provedena správně, takže návratový kód je 0.
Měli byste použít scp místo toho nevrátí 0, pokud se kopírování nezdaří.

Můžete udělat něco jako :

file=file_pattern`date -d "last month" +%m%Y`.csv 
[email protected]:/rsdir1/rsdir2/rsdir3/$file
local=/rsdir1/rsdir2/rsdir3/$file

if scp -q $remote $local
then
    echo "Successfully transferred the file" `date "+%Y-%m-%d-%H.%M.%S"`
else
    echo "Error occured getting file and the script abended with error code $?" `date "+%Y-%m-%d-%H.%M.%S"`
    exit 1
fi

EDIT:Změnil jsem cíl kopírování na název souboru:Pokud kopírujete do adresáře a tento adresář chybí, vytvoříte soubor s názvem adresáře.


Linux
  1. Jak získat stav ukončení smyčky v bash

  2. Získejte konkrétní řádek z textového souboru pouze pomocí skriptu Shell

  3. návratová hodnota z python skriptu do shell skriptu

  1. Bash skript k odstranění nejstaršího souboru ze složky?

  2. Jak získat adresu URL souboru Dropbox z příkazového řádku?

  3. Bash skript pro odstranění nejstaršího souboru ze složky

  1. Jak odstranit Bom ze souboru UTF-8?

  2. Jak získat další informace o původu výstupního kódu?

  3. Bash + Jak opustit sekundární skript a hlavní skript v obou případech?