如何使用动态输入参数从BASH使用StdIn脚本调用python?
作为 BASH 脚本的一部分,我需要使用输入参数启动一些 python 代码。我也想避免创建一个临时的 *.py 文件。
这是我到目前为止:
input=123
output=$(
python - <<'END_SCRIPT'
print("$input")
END_SCRIPT
)
echo $output
此代码段将 python 调用的输出写入输出变量。但是它没有返回“123”,而是返回“$input”,因为在管道传输到 python 的过程中不会解释该变量。从 StdIn 读取时,有什么方法可以将输入变量作为参数转发给 python?
回答
我猜你正在寻找
input=123
output=$(python - "$input" <<'END_SCRIPT'
import sys
print(sys.argv[1])
END_SCRIPT
)
echo "$output"
(另请注意何时用引号将 shell 变量括起来。)