shell-script – 无法在bash中将bash变量作为python参数传递
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了shell-script – 无法在bash中将bash变量作为python参数传递,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1554字,纯文字阅读大概需要3分钟。
内容图文
出于某种原因,我无法将bash变量$FOLDER作为python参数传递给以下代码. python脚本从amazon s3下载一些文件.
Bash脚本:
#!/bin/bash
FOLDER=$(./aws get $BUCKET"/location.txt")
python /data/pythonscript.py $FOLDER
#
$FOLDER的输出是重新生成的日期,例如. 2014/07/31 / 14-16-34,用作路径.
这是python脚本:
#!/usr/bin/python
import boto, sys
from boto.s3.connection import S3Connection
access_key = 'accesskey'
secret_key = 'secretkey'
bucket_name = 'a name'
folder_path = str(sys.argv[1]) if len(sys.argv) > 1 else ''
print("Forwarded folder path " + folder_path)
conn = S3Connection(access_key, secret_key)
bucket = conn.get_bucket(bucket_name)
print("Bucket Location:" + bucket.get_location())
for key in bucket.list(prefix=folder_path, delimiter=''):
if '.' in key.name:
file_name = key.name[len(folder_path)+1:]
print("Downloading file " + file_name)
key.get_contents_to_filename('/data/temp/' + file_name)
当我执行bash脚本而不更改python /data/pythonscript.py $FOLDER行时,我得到以下输出:
Forwarded folder path 2014/07/31/14-16-34
Buckect Location:
但当我将其更改为python /data/pythonscript.py 2014 / 07/31 / 14-16-34时,一切正常:
Forwarded folder path 2014/07/31/14-16-34
Bucket Location:
Downloading 2014/07/31/14-16-34/FacetedSearch.zip
Downloading file FacetedSearch.zip
Downloading 2014/07/31/14-16-34/Location.zip
Downloading file Location.zip
Downloading 2014/07/31/14-16-34/LocationPage.zip
Downloading file LocationPage.zip
解决方法:
也许aws bash命令返回了print()没有看到的不可打印的字符.尝试用tr删除它们:
FOLDER=$(./aws get $BUCKET"/location.txt" | tr -cd "[:print:]")
内容总结
以上是互联网集市为您收集整理的shell-script – 无法在bash中将bash变量作为python参数传递全部内容,希望文章能够帮你解决shell-script – 无法在bash中将bash变量作为python参数传递所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。