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