如何解决 '/dev/fd/63: ... 未找到命令' bash 脚本错误

如何解决 '/dev/fd/63: ... 未找到命令' bash 脚本错误

当在 Ubuntu 18.04 CLI 中手动运行这些命令(以 root 身份)时,一切正常。

sudo apt install snapd -y
snap install lxd

但是当我将这些相同的行放入 Bash 脚本中时,出现以下错误:

/dev/fd/63: line 71: sudo apt install snapd -y: command not found
/dev/fd/63: line 72: snap install lxd: command not found

我在另一个超级简单的脚本中分离了命令,并且安装了 snapd,但对于第二个命令我仍然得到:

/dev/fd/63: line 8: snap install lxd: command not found

以下是使用 GitLab 在线 IDE 编写的超级简单的 bash 脚本:

#!/bin/bash

apt update
apt upgrade -y
apt autoremove -y

apt install snapd -y
snap install lxd

我开始脚本

bash <(curl --request GET --header 'PRIVATE-TOKEN: PRIVATE' 'https://gitlab.com/api/v4/projects/1234567/repository/files/lxd-install-test.sh/raw?ref=master')

答案1

检查脚本文件中是否存在非标准空白字符,例如不间断空格。(U+00A0或 HTML &nbsp;

错误消息command not found通常会报告未找到的命令的名称。 (例如sudosnap。)但是在您的情况下,它会将整行报告为命令。这提示将参数与命令名称和 彼此分开的空白字符不是常规空白字符(U+0020),而是屏幕上显示为空白的其他一些字符。最常遇到的此类字符是不间断空格(U+00A0)。如果代码是通过从网页或其他格式化文本源复制粘贴传输的,则可能会发生这种情况。bash命令行解析器不将这样的字符视为分隔符,因此无法识别命令动词。

相关内容