在 WSL 中运行 shell 脚本时出现“E: Invalid operation update”错误

Posted

技术标签:

【中文标题】在 WSL 中运行 shell 脚本时出现“E: Invalid operation update”错误【英文标题】:"E: Invalid operation update" error while running shell scripts in WSL 【发布时间】:2019-08-11 00:13:21 【问题描述】:

我有一个名为 setup_wsl.sh 的 shell 脚本,其中包含:

#!/bin/bash

echo "hai"
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"  
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

当我在 WSL 中以 ./setup_wsl.sh 运行脚本时(安装的发行版是 ubuntu 18.04),出现以下错误:

hai
E: Invalid operation update
E: Unable to locate package
./setup_wsl.sh: 4: ./setup_wsl.sh: apt-transport-https: not found
./setup_wsl.sh: 5: ./setup_wsl.sh: ca-certificates: not found
curl: (3) Illegal characters found in URL
./setup_wsl.sh: 7: ./setup_wsl.sh: gnupg-agent: not found
: not found ./setup_wsl.sh: software-properties-common
: not found ./setup_wsl.sh:

脚本的第一个命令运行良好,因为它给出了输出“hai”。

有人可以帮我找出这些错误发生的原因吗?

【问题讨论】:

【参考方案1】:

这是因为 windows 中的回车。 使用文本编辑器切换到 LF 托架并保存新的以运行脚本 或 sed -i -e 's/\r$//' setup_wsl.sh

【讨论】:

非常感谢。我在通过 Vagrant 在 Windows 上使用 Linux VM 并将 Windows Notepad++ 中的同步 sh 文件修改为 CRLF 时遇到了问题。只需将其更改为 LF 就可以了。 这对我帮助很大。修复了问题。【参考方案2】:

对于使用 Notepad++ 的任何人,请转到 Edit => EOL Conversion => Unix(LF) 如下图所示

【讨论】:

【参考方案3】:

对于VSCode,你只需要在状态栏中进行设置

更多细节和选项在这里https://qvault.io/clean-code/line-breaks-vs-code-lf-vs-crlf/

【讨论】:

以上是关于在 WSL 中运行 shell 脚本时出现“E: Invalid operation update”错误的主要内容,如果未能解决你的问题,请参考以下文章

从 shell 脚本运行 python 文件时出现 ModuleNotFoundError 错误

Splunk MINT shell 脚本问题:当我尝试在 Xcode 9.3 中存档应用程序时出现问题

从脚本填充数据库时出现 Django Heroku DataError

创建目录时出现 Oozie shell 操作问题

终端无法运行存储在 PATH 目录中的 shell 脚本文件

通过 shell 调用 python 时出现模块问题