作为BASH脚本的一部分,我需要启动一些带有输入参数的python代码。我还想避免创建临时*.py文件.
这就是我目前所拥有的:
input=123
output=$(
python - <<'END_SCRIPT'
print("$input")
END_SCRIPT
)
echo $output
这个片段将python调用的输出写入一个输出变量。但不是返回";123〃;它返回"0"$输入";,因为在管道连接到python的过程中不会对变量进行解释。在从StdIn读取时,是否有任何方法可以将输入变量作为参数转发到python?
我想你在找
input=123
output=$(python - "$input" <<'END_SCRIPT'
import sys
print(sys.argv[1])
END_SCRIPT
)
echo "$output"
(还要注意什么时候将引号括在shell变量周围。(
只需去掉END_SCRIPT
周围的单引号
input=123
output=$(
python - << END_SCRIPT
print("$input")
END_SCRIPT
)
echo $output
最后,我决定完全跳过将任何输入变量传递给python,并根据需要更好地设置环境变量。这是我的最终结果:
input='<123!>'
output=$(python3 - <<'END_SCRIPT'
import os
print(os.environ['input'])
END_SCRIPT
)
echo "$output"