我正在尝试通过别名打开一个工作空间(如果存在工作空间文件):
从别名“ co”校准后,此方法不起作用
alias co=[ -f $(basename $(PWD)).code-workspace ] && code $(basename $(PWD)).code-workspace || code .
但是它可以在另一个终端上工作
[ -f $(basename $(PWD)).code-workspace ] && code $(basename $(PWD)).code-workspace || code .
你知道为什么吗?
答案 0 :(得分:0)
该字符串需要加引号。
alias co='[ -f $(basename $(PWD)).code-workspace ] && code $(basename $(PWD)).code-workspace || code .'
但是,功能要好得多。无需将所有内容都塞进一行。
co() {
if [ -f "$(basename "$PWD")".code-workspace ]; then
code "$(basename "$PWD")".code-workspace
else
code .
fi
}
最好使用if / else而不是&&
和||
。 Greg's Bash Guide说:
如果我们要进行简单的错误检查,则使用条件运算符既简单又简洁。但是,当我们要在条件成立的情况下运行多个语句或需要评估多个条件时,情况就会变得更加危险。
...
通常,在一个命令中将多个不同的控制运算符串在一起不是一个好主意。
&&
和||
在简单情况下非常有用,但在复杂情况下则没有。