【发布时间】:2019-08-20 20:36:42
【问题描述】:
输出是一样的,它总是回显need to pull。
如果我在if 条件中删除$text 周围的引号,则会引发too many arguments 错误。
var="$(git status -uno)" &&
text="On branch master Your branch is up-to-date with 'origin/master'. nothing to commit (use -u to show untracked files)";
echo $var;
echo $text;
if [ "$var" = "$text" ]; then
echo "Up-to-date"
else
echo "need to pull"
fi
【问题讨论】:
-
git status的输出不是单行文本。一般来说,这是编写 git 脚本的一种非常脆弱的方法——不能保证git status的输出在 git 版本之间不会发生变化。更好的方法是使用git status --porcelain(参见docs)。 -
当我针对最新分支发出
git status -uno时,git status的返回值中包含换行符。您的$text变量中似乎没有考虑这些。