首页 > 解决方案 > 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 文件一样工作?),所以我确定我只是缺少一些简单的东西。想法?

标签: pythonlinuxbashamazon-web-servicesamazon-s3

解决方案


该脚本似乎是 DOS 格式(CR LF 换行符)。该脚本必须转换为 Unix 格式(LF 换行符)。做dos2unix ./aws_script.sh,如果你有dos2unix命令,或者sed -i 's/\r$//' ./aws_script.sh


推荐阅读