如何使用来自BASH的StdIn脚本和动态输入参数调用python



作为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"

最新更新