我正在尝试将 bashrc 配置转换为 Fish shell 配置,并且提示中包含此部分:
function fish_prompt
....
if [ $RETVAL -ne 0 ]
printf "✘"
else
printf "✓"
end
....
end
此配置会导致错误:
test: Missing argument at index 2
有人可以向我解释一下,这里出了什么问题吗?
最佳答案
RETVAL
未设置:
$ set -e RETVAL
$ if [ $RETVAL -ne 0 ]; echo foo; end
test: Missing argument at index 2
$ set RETVAL 1
$ if [ $RETVAL -ne 0 ]; echo foo; end
foo
如果您想抑制错误消息,请测试该变量是否存在。另外,使用fish的内置test
而不是外部[
$ set -e RETVAL
$ if begin; set -q RETVAL; and test $RETVAL -ne 0; end; echo foo; else; echo bar; end
bar
$ set RETVAL 1
$ if begin; set -q RETVAL; and test $RETVAL -ne 0; end; echo foo; else; echo bar; end
foo
实际上,这可能更整洁:
if test -n "$RETVAL" -a "$RETVAL" -ne 0; echo foo; end
关于shell - 在 Fish shell 提示符中测试 RETVAL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014002/