将参数(列表)从 /bin/sh 传递到 python

Pass arguments(a list) from /bin/sh to python

我有一个 test.py 文件如下:

year= sys.argv[1]
for i in range(len(year)):
   
    print("Working on year",year[i])

year 应该采用诸如 ['2021','2022'] 之类的年份列表并循环遍历它。我正在构建一个 .sh 文件,它可以将年份列表传递给 python.Here 是 test.sh 文件:

#!/bin/bash

year=


echo 'Working on' $year 'year'

python path/test.py $year 

我希望能正确设置它,这样我就可以 运行 在命令行中这样做:

sh test.sh '2021 2022'

它会打印出年份。但是,它循环通过 2,0,2,1 而不是 20212022。我该如何解决这个问题?

在你的 shell 脚本中,通过使用 "$@" 扩展到 "" "" "" 来传递整个参数列表......等等,因为有很多参数可用:

#!/bin/bash
echo "Requesting work on years:"
printf ' - %s\n' "$@"
python path/test.py "$@"

在您的 Python 脚本中,处理整个参数列表:

#!/usr/bin/env python
import sys
for i in sys.argv[1:]:
    print("Working on year", i)