您可能都知道,bash可以打印最后一个命令退出代码。这对我有用,但是我想通过添加if语句来检查$?
是否为0
来改进它。如果为0
,则以白色打印代码;如果不同,则以红色打印。不幸的是,这似乎不起作用:
if [ $? == "0" ]; then
PS1=${PS1}'$(echo ${?})'
else
PS1=${PS1}'\e[1;31m\]$(echo ${?})'
fi
我也尝试过:
if [ $(echo $?) == "0" ]; then
PS1=${PS1}'$(echo ${?})'
else
PS1=${PS1}'\e[1;31m\]$(echo ${?})'
fi
还:
if [ $(echo ${?}) == "0" ]; then
PS1=${PS1}'$(echo ${?})'
else
PS1=${PS1}'\e[1;31m\]$(echo ${?})'
fi
他们都没有工作。
Somehow变量始终为0,因此以白色打印。
我怎么可能打印退出代码,但不能用"if"
检查退出代码?这是bash限制吗,还是我做错了什么?
答案 0 :(得分:0)
只需将filter 'all' bmodel__text__icontains=search_word
添加到PS1。
$?
如果要更改颜色,则必须在PS1内进行更改,而不是静态地进行更改。...还要注意,> PS1='PS $ '
> PS $ echo 1
> 1
> PS $ PS1='PS $? $ '
> PS 0 $ false
> PS 1 $ true
> PS 0 $
会更改其值,因此需要保存。
$?
答案 1 :(得分:0)
$?
是 last 命令的退出状态。如果执行某些命令,例如[ … = … ]
,则$?
会更改。示例:
myCmd
echo $? # prints exit status of myCmd
echo $? # prints exit status of echo
myCmd
if [ $? = 0 ]; then
echo $? # prints exit status of `[`, here 0
else
echo $? # prints exit status of `[`, here 1
fi
如果以后要访问myCmd
,请在另一个变量中存储其退出状态。
myCmd
exitStatus=$?
echo $exitStatus # prints exit status of myCmd
echo $exitStatus # prints exit status of myCmd
顺便说一句:"$(echo ${?})"
太复杂了;只是"$?"
在各个方面都更好。