我想用從xargs
因爲這數組的索引aruments,這是腳本:如何使用參數從`xargs`作爲數組的索引
1 #!/bin/bash
2 array[0]=x
3 array[1]=y
4 echo array : ${array[0]}, ${array[1]}
5 echo -n {0..1} | xargs -I index -d" " echo index,${array[index]}
,這是輸出:
[[email protected] scripts]$ sh test.sh
array : x, y
0,x
1,x
您可以看到數組無法正確接受索引,它始終是第一個。我怎樣才能得到這樣的輸出:
array : x, y
0,x
1,y
我發現用命令echo
的例子,但是,我真正的目的是另一個命令,就像這樣:
echo -n {0..1} | xargs -I index -d" " somecommand ${array[index]}
,這樣我想這個問題的一般解決方案。
而且我也試過parallel
而不是xargs
,它有同樣的問題。
這不可能工作,你所希望的方式,因爲該數組只存在於shell中,'xargs'通過創建子進程來工作。在執行xargs之前,xargs命令行中的'$ {...}'內容僅擴展一次。您必須將該數組設置爲子進程,或者將xargs重寫爲shell循環。 –
@ WumpusQ.Wumbley好的,但是,我想用'xargs'做並行,所以shell循環不能成爲一個合適的解決方案:( –
你可以嘗試把數組作爲一個列表在環境中,並使用在'xargs'開始的命令中,但可能存在轉角情況... –