簡體   English   中英

bash - 將變量傳遞給 shell 文件中的字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM