Sto scrivendo una sceneggiatura per automatizzare la creazione di nuovi progetti per me.Catturare l'output dal comando git?
questo include la rimozione di un repository github.
Quello che voglio fare è avere un po 'di uscita dal mio script, quindi chiamare git clone $repo
voglio mostrare l'output di questo comando mentre è in esecuzione, ma poi quando si è eseguito se è stato eseguito correttamente sostituire è in uscita (si noti solo l'output dei comandi git, voglio ancora l'output di prima che sia lì) con repository successfully cloned
e, in caso di errore, lasciare lì l'output e stampare repository cloning failed
.
Come posso fare questo?
Di seguito è il mio script corrente (piuttosto semplice).
#! /bin/bash
# -p project name
templateurl="[email protected]:xxx/xxx-site-template.git"
while getopts ":p:" opt; do #eventually I'll add more options here
case $opt in
p)
project=$OPTARG
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
if [ -z "$project" ]; then
echo "Project name required"
exit 1
fi
clear
echo "|==========================|"
echo "| New xxx Project Creator |"
echo "|==========================|"
echo "Project: $project"
if [ -d "$project" ]; then
echo "Directory $project already exists!"
exit 1
fi
mkdir $project
if [ ! -d "$project" ]; then
echo "Failed to create project directory!"
exit 1
fi
echo "Cloning xxx Template repository"
git clone $templateurl $project
Ho modificato la parte inferiore dello script come 'git clone $ templateurl $ project --quiet success = $? se [[successo -eq 0]]; quindi echo "Repository clonato con successo." fi' Ma sto ricevendo l'errore '[[: non trovato' sulla riga con l'istruzione if. inoltre, penso che la mia domanda sia leggermente incomprensibile, voglio comunque visualizzare l'output normale mentre il comando è in esecuzione, in modo che l'utente riceva un feedback su ciò che sta accadendo. ma voglio cancellare quell'output una volta che il comando è finito. – Hailwood
C'è un $ mancante nell'istruzione if: '[[$ successo ...;' Se si desidera eliminare l'output già stampato, si dovrà trattare del ritorno a capo (\ r) e quindi sovrascrivere il vecchio output. Suppongo che l'eliminazione dell'output già stampato non sia possibile. – sge
Un'altra possibilità sarebbe usare ANSI-Escape-Codes http://ascii-table.com/ansi-escape-sequences.php. es. "echo -e" \ 033 [2K "' rimuove la linea attiva.Una combinazione di impostare la posizione del cursore e rimuovere le linee potrebbe portare al successo. – sge