我有一个调用python脚本的bash脚本,如下所示:
OUTPUT=$(python /path/path/script.py attr attr attr);
Run Code Online (Sandbox Code Playgroud)
python脚本将返回如下数据列表:
[item1, item2, item3]
Run Code Online (Sandbox Code Playgroud)
如何将$ OUPUT变量(返回python数据列表的字符串)转换为bash数组?
如果可能的话,我想用bash阅读每个项目.
Cyr*_*rus 27
添加()
和| tr -d '[],'
:
OUTPUT=($(python /path/path/script.py attr attr attr | tr -d '[],'))
echo ${OUTPUT[0]}
echo ${OUTPUT[1]}
echo ${OUTPUT[2]}
echo ${OUTPUT[@]}
Run Code Online (Sandbox Code Playgroud)
输出:
item1
item2
item3
item1 item2 item3
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以让 script.py 打印一个用空格分隔每个项目的字符串,Bash 会将其转换为数组,或者您可以使用 Bash 将 python 脚本的返回值转换为您想要的格式。
如果您选择从 script.py 打印字符串,则可以使用以下 python 代码:
returnList = [1, 2, 3]
returnStr = ''
for item in returnList:
returnStr += str(item)+' '
print(returnStr)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,以下 bash 脚本的输出:
OUTPUT=$(python /path/to/script.py)
echo $OUTPUT
for i in $OUTPUT;
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
是:
1 2 3
1
2
3
Run Code Online (Sandbox Code Playgroud)
希望这对您有帮助。