【发布时间】:2021-04-12 00:41:21
【问题描述】:
我想使用 test.sh 执行 hello.py。但是,似乎 test.sh 将 hello.py 读取为 sh 文件。
错误信息
line 1: syntax error near unexpected token `'hello''
test.sh
#!/user/bin/ python (which python path)
ARRAY=(1 2 3 4)
for num in ${ARRAY[@]}; do
/artic/m-yasunaga/work/korin-3/src/example/hi.py
echo $num"th loop"
done
你好.py
print('hello')
当我将 print('hello') 更改为 echo hello 时,它运行良好。
如何将 hello.py 作为 python 代码执行? (我用的是linux)
【问题讨论】:
-
你的 python 脚本需要一个 shebang 行(见this question)。此外,你的 shell 脚本应该有一个 shell shebang,而不是一个引用 python(并且它不能包含括号注释,也不能在路径中间包含空格)。启动脚本的 shebang 行指示如何运行 该脚本,而不是它可能运行的其他脚本。当您像这样直接运行脚本时,会忽略文件扩展名(如 .sh 或 .py)。
-
实际上,由于您的 shell 脚本使用数组(这是一个 bash 扩展,在所有其他 shell 中都不可用),因此您应该使用 bash shebang(如
#!/bin/bash或#!/usr/bin/env bash),而不是一个通用的 shell shebang(比如#!/bin/sh)。 -
/user/bin/ python?这……很奇怪。试试/usr/bin/python。 -
@JennyRowland :添加到 Pursell 的评论中,您的脚本是 Shell,而不是 Python。尝试为 Python 构建 #!-line 更加奇怪......