![](/img/trans.png)
[英]How to pass python variable to bash shell part of the same file?
[英]bash - Pass variable to a string in a shell file
我正在嘗試通過 bash 腳本運行 docker 命令,但無法正確傳遞參數。
通過 bash 腳本是:
#!/bin/bash
start=$(date -d '13 hours ago' '+%Y-%m-%d %H')
end=$(date -d '12 hours ago' '+%Y-%m-%d %H')
docker run --rm -v /home/basic/buffer/:/home psycopg2 /bin/sh -c 'python /home/config.py ${start} ${end} ' > /home/basic/result
我的python腳本是(config.py):
import psycopg2
import datetime
import sys
start = "%s" % (sys.argv[1])
end = "%s" % (sys.argv[2])
print("start:",start)
print("end:",end)
但它打印空字符串。
有任何想法嗎?
您不需要額外的外殼; 只需引用參數擴展,以便docker run
接收正確的參數; 這些將直接傳遞給 Python,無需任何進一步的 shell 處理。 在容器的側面。
#!/bin/bash
start=$(date -d '13 hours ago' '+%Y-%m-%d %H')
end=$(date -d '12 hours ago' '+%Y-%m-%d %H')
docker run --rm -v /home/basic/buffer/:/home psycopg2 \
python /home/config.py "${start}" "${end}" > /home/basic/result
一個簡單的例子:
% docker run --rm bash /usr/bin/printf '%s\n' "a b" "c d"
a b
c d
printf
接收三個參數,而不是五個。 容器內沒有構造像printf %s\\nabcd
這樣的命令。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.