我正在编写一个脚本来自动为我设置新项目。从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