python - Linux 命令在控制台中运行良好,但在 .sh 文件中失败?
问题描述
我遇到了一个问题,我可以在 Linux 控制台中完美地运行以下行,但是当它们包含在.sh
文件中(如图所示)时会失败:
aws s3 cp s3://bucket/folder/ . --recursive
python Run.py
第一行从 AWS S3 中取出所有文件并将它们放在当前文件夹中。该--recursive
标志抓取指定 s3 存储桶中的所有文件。第二行是一个基本的 python 脚本,它来自 S3 Bucket 文件并打印“hello world”。
当我在控制台中运行它时,我运行的.sh
是:
chmod +x ./aws_script.sh
./aws_script.sh
该文件失败并出现以下错误:
Unknown options: --recursive
python: can't open file 'Run.py': [Errno 2] No such file or directory
我曾尝试#!/bin/bash
在脚本顶部使用,.sh
但失败并出现以下错误:
-bash: ./aws_script.sh: /bin/bash^M: bad interpreter: No such file or directory
我对 Linux 相当陌生,以前从未使用.sh
过(我认为它就像 .bat 文件一样工作?),所以我确定我只是缺少一些简单的东西。想法?
解决方案
该脚本似乎是 DOS 格式(CR LF 换行符)。该脚本必须转换为 Unix 格式(LF 换行符)。做dos2unix ./aws_script.sh
,如果你有dos2unix
命令,或者sed -i 's/\r$//' ./aws_script.sh
。
推荐阅读
- html - img 标签中的渐变属性
- python - 如何以特定顺序对两个(或更多)不同列上的熊猫数据框进行排序
- node.js - 立即更新 KOA 中的 cookie
- xamarin - More TabbedPage 的不同文本(语言资源来源)
- android - 在哪里可以找到浏览器下载的 android emulator.zip?
- curl - curl 到 wget 的转换
- neo4j - 在 grapheneDB 上正确配置图形数据科学插件
- javers - 比较没有id的javers中的实体
- javascript - Axios / JWT 发布 401(仅限 Mac OS 和 iOS)“rest_forbidden”
- c# - C# Unity,函数之外的命名参数语法?