Я хочу использовать аргументы из 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]}
и это вывод:
[usr@linux 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
, у него та же проблема.
xargs
работает, создавая дочерние процессы. Элемент${...}
в командной строке xargs раскрывается только один раз, перед выполнением xargs. Вам придется либо сделать массив доступным для дочерних процессов, либо переписать xargs как цикл оболочки. - person   schedule 19.10.2016xargs
для параллельного выполнения, поэтому цикл оболочки не может быть правильным решением :( - person spring cc   schedule 19.10.2016xargs
, но могут быть крайние случаи... - person Serge Ballesta   schedule 19.10.2016