0
需要從JSON文件中提取每行兩個變量,並在單獨的後續命令中使用這兩個變量中的每一個。在shell腳本中將bash變量傳遞給python命令
我的劇本是迄今爲止:
#!/bin/bash
VCTRL_OUT='/tmp/workingfile.json'
old_IFS=$IFS # save the field separator
IFS=$'\n' # new field separator, the end of line
for line in $(cat $VCTRL_OUT)
do
python -c 'import json,sys;obj=json.load($line);print obj["ip_range"]'
done
的倒數第二行是錯誤的,需要知道如何做到這一點。
以下工作:
cat /tmp/workingfile.json | head -n +1 | python -c 'import json,sys;obj=json.load(sys.stdin);print obj["ip_range"]';
,但不知道如何爲循環做同樣的bash腳本。
bash中的單引號殺死所有特殊字符,甚至是$ line變量中的'$',所以不是變量的值,而是傳遞'「$ line」'字符串。你需要在'python -c ...'命令周圍使用雙引號。 – karlosss
JSON文件是什麼樣的?比試圖爲文件的每一行運行單獨的Python程序有更好的選擇。 (忽略JSON不是面向行並且通常不能被逐行處理的這一事實,這是在'bash'中迭代文件的錯誤方法;請參見[Bash FAQ 001](http:// myjie.wooledge.org/BashFAQ/001)。) – chepner
@karlosss - 現在運行的json.load命令現在不起作用,因爲它是針對json行運行的。什麼需要修改? – dross