我使用 Lubuntu 16.04
今天早上,每当我打开一个新终端时,我都会在终端中收到此消息bash: [: /home/timi95/workspace/WEB_TECHNOLOGIES/Angular: binary operator expected
,我不确定出了什么问题,我尝试了 tset、reset、sudo 更新等。
在指定的路径中甚至不存在名为“Angular”的文件或文件夹。
关于可能发生什么事情或如何解决此问题有任何线索吗?
除了更新之外,我记得安装的最后一件事是 electron-forge。我当时正在考虑跨平台桌面应用工具。你认为这与此有什么关系吗?
答案1
在您的错误信息中您有
/home/timi95/workspace/WEB_TECHNOLOGIES/Angular
然而在评论中你提到了这句话
/home/timi95/workspace/WEB_TECHNOLOGIES/Angular projects/test-forge-project/node_modules/tabtab/.completions/electron-forge.bash
Angular
注意和之间的空格projects
。这是问题的核心。
在[
命令中(是的,这是一个命令,也称为test
,而不仅仅是一个括号),-f
操作符期望它后面有一个参数。空格使得该行看起来好像后面有两个参数-f
。因此,应该通过引用路径或使用反斜杠转义空格来修复此问题,如下所示
/home/timi95/workspace/WEB_TECHNOLOGIES/Angular\ projects/test-forge-project/node_modules/tabtab/.completions/electron-forge.bash
命令行中的空格用作单词分隔符,如果未对空格进行转义或加引号,shell 会将该行视为比您预期的更多的单词。除此之外,这也是您应该对变量加引号的原因之一 - 如果不加双引号,IFS
将应用空格、换行符或制表符进行单词拆分(因为这些是 shell 进行单词拆分时参考的变量的默认值)。