我正在編寫一個腳本來自動爲我設置新項目。從git命令捕獲輸出?
這包括拉下github存儲庫。
我想要做的是從我的一些腳本輸出,然後調用git clone $repo
我想表明從該命令的輸出在運行時,但是當它運行,如果它已成功運行代替它的輸出(注意只是git命令的輸出,我仍然希望之前的輸出在那裏)和repository successfully cloned
,如果失敗,就把輸出留在那裏,然後打印repository cloning failed
。
我該怎麼做?
下面是我目前(相當簡單)的腳本。
#! /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
我已經將腳本的底部改爲'git clone $ templateurl $ project --quiet success = $? if [[success -eq 0]]; 然後 echo「已成功克隆存儲庫」。 fi' 但是我得到錯誤'[[:未找到]與if語句行。另外,我認爲我的問題稍有誤解,我仍然希望在命令運行時顯示正常輸出,以便用戶獲得有關正在發生的事情的一些反饋。但是一旦命令完成,我想清除那個輸出。 – Hailwood
if語句中有$ missing:'[[$ success ...;'如果你想刪除已經打印的輸出,你必須處理回車符(\ r),然後覆蓋舊的輸出。我假設刪除已經打印的輸出是不可能的。 – sge
另一種可能性是使用ANSI-Escape-Codes http://ascii-table.com/ansi-escape-sequences.php。例如'echo -e「\ 033 [2K」'刪除活動行。設置光標位置和刪除線條的組合可能會導致成功。 – sge