Сам по себе немного слишком сложный, но с соблюдением формата, предоставленного большинством других, но без вызова IFS, который я бы использовал.
pairs=( "name1,url1" "name2,url2" "name3,url3" )
for pair in "${pairs[@]}"; do
#Create an array in itself, of the two values.
tmpArr=(`echo $pair | tr ',' ' '`)
#Then either use Array Indexing on the array ie.
#Or place the offsets in their own variables. ie Run=${tmpArr[0] ...;
command ${tmpArr[0]} ${tmpArr[1]}
done
Устраняет необходимость во временных файлах, никакой реальной очистки не требуется, если они используются внутри сценарий, который изначально использует Sha-Bang или делает его локальным в функции, как я и делал большую часть своих сценариев, сохраняя синтаксис как можно ближе к "C". Я также придерживаюсь моего девиза bash: «Если вы хотите это сделать, значит, кто-то уже делал это раньше и сделал модуль, так что не выполняйте эту работу заново ...»
Ваш второй вопрос неоднозначен. Вопрос 1 прямолинейный. При этом будут получены соответствующие идентификаторы процессов:
PIDS=`vm list | grep ' Running ' | sed -e 's;.* Running ;;' | tr -d '()'`
echo $PIDS
for PID in $PIDS; do ps wwup $PID; done