Выполнение нескольких команд с XARGS в Windows Cygwin - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть такой вывод:

$ ./adb devices

List of devices attached
R9WM80DNNPJ     device

(в конечном итоге это вернет несколько строк устройств, таких как:

List of devices attached
R9WM80DNNPJ     device
R9WM80DNNPA     device
R9WM80DNNPB     device
R9WM80DNNPC     device

)

, и я пытаюсь получить имя устройства, чтобы передать его нескольким другим командам. Попытка в конечном итоге добраться до скрипта, который выглядит следующим образом (он будет делать больше, чем эхо c):

adb devices |  more +1 | cut -sf 1 | xargs -I % sh -c '{ ^
echo % ; ^
echo "Test %"; ^
}'

Когда я помещаю команду все в одну строку, у терминала cygwin нет проблем с эхом 'it it out:

correct terminal result

Когда я перемещаю эту команду в файл, она перестает работать правильно (вывод первой строки - это печать команда используется, но затем она не выполняет первое эхо):

single-line script

single-line command result

И выполнение многострочной команды также не работает:

multi-line script

multi-line command result

My угадайте, я делаю что-то не так с символами новой строки? или это как-то связано с sh -c? или оба!

1 Ответ

0 голосов
/ 03 февраля 2020

Переход к списку аргументов по умолчанию {} решил эту проблему!

adb devices |  more +1 | cut -sf 1 | xargs -I {} sh -c {' ^
    echo {}; ^
    echo "Test {}"; ^
'}

enter image description here

enter image description here

...