我在将python变量(1个文件)传递到bash脚本时遇到问题。 python程序提取文件(csv文件)并将其分配给var1,然后将其传递给bash脚本。 bash脚本将其上传到服务器。 bash脚本有效,但是当我尝试将文件变量从python传递到bash时,它不起作用。看起来变量是空的,我只得到正在加载到服务器中的文件名,而不是数据。所有文件都位于同一文件夹(upload.py,upload_files.sh,data_file.csv)中,这是我的新手,所以对您的帮助非常感谢。
import subprocess
var1 = "data_file.csv"
subprocess.call(["bash", "upload_files.sh", var1])
#!bin/bash
#
export HOST=example_server.com
export DATA_FILE=$1
#
curl -X PUT -L --header "Content-Type: text/csv" --data-binary@${DATA_FILE} "https://${HOST}:21/sserver/api/v3/fs/server-1/bulk_upload/${DATA_FILE}"
答案 0 :(得分:1)
变量值的var1="data_file.csv"
左侧使用引号,如果使用语音标记,则变量将展开。
如果您想使用单引号来避免额外的转义,您可以改为在同一参数中混合使用引号:
$ echo 'single quoted. '"Double quoted. "'Single quoted again.'
单引号。双引号。单引号再次被引用。
$ echo '"$name" has the value '"$name"
"$name"
的价值是世界
答案 1 :(得分:0)
您在--data-binary
和引号后面缺少空格
curl -X PUT -L --header "Content-Type: text/csv" --data-binary "@${DATA_FILE}" "https://${HOST}:21/sserver/api/v3/fs/server-1/bulk_upload/${DATA_FILE}"