【发布时间】:2022-07-27 21:40:43
【问题描述】:
我有一个 bash 命令如下:
dependencies=$(/path/to/my-profiles.py --my-profiles pytest)
IFS=' ' read -r -a arr <<<"$dependencies"
declare -p arr
for i in "${arr[@]}"
do
echo "$i"
done
我的 Python 脚本如下:
my-script.py
def main():
parser = argparse.ArgumentParser(description='My script')
parser.add_argument('--my-profiles', dest="profiles",
type=str,
default='')
parsed_args = parser.parse_args()
dependencies = get_dependencies(args.profiles)
return dependencies
def get_dependencies(profiles):
return ' '.join([
'mock-alchemy', 'pytest-mock', 'pytest-datafixtures', 'pytest-describe', 'pytest-unordered', 'requests-mock'
])
当我使用上面的 python 脚本运行 bash 脚本时,我得到如下输出:
mock-alchemy pytest-mock pytest-datafixtures pytest-describe pytest-unordered requests-mock
declare -a arr='()'
但是,如果我在我的 python 脚本中添加 print 语句,我会得到我想要的结果:
my-script.py
def main():
parser = argparse.ArgumentParser(description='My script')
parser.add_argument('--tox-profiles', dest="profiles",
type=str,
default='')
parsed_args = parser.parse_args()
dependencies = get_dependencies(args.profiles)
print(dependencies)
return dependencies
def get_dependencies(profiles):
return ' '.join([
'mock-alchemy', 'pytest-mock', 'pytest-datafixtures', 'pytest-describe', 'pytest-unordered', 'requests-mock'
])
在脚本中添加打印语句,我得到以下结果:
mock-alchemy pytest-mock pytest-datafixtures pytest-describe pytest-unordered requests-mock
declare -a arr='([0]="mock-alchemy" [1]="pytest-mock" [2]="pytest-datafixtures" [3]="pytest-describe" [4]="pytest-unordered" [5]="requests-mock")'
mock-alchemy
pytest-mock
pytest-datafixtures
pytest-describe
pytest-unordered
requests-mock
我希望我的解决方案为第二种类型,但我不想添加打印语句。我想知道我做错了什么以及如何解决?
【问题讨论】: