В дополнение к тому, что написал @Olorin , я думаю, здесь может быть пара недоразумений. Во-первых, for y in ${x}/*; do pushd "$y"; then
приводит к
bash: syntax error near unexpected token `then'
Во-вторых, отступ может ввести вас в заблуждение относительно того, что происходит на самом деле. Возьмите эту правильно отформатированную версию исходного кода:
for y in ${x}/*/
do
if pushd "$y"
then
command1
command2
popd
fi
done
Другими словами, все command1
, command2
и popd
запускаются только в том случае, если первоначальный pushd
завершился успешно. Если вы вместо этого написали
for y in ${x}/*/
do
pushd "$y"
command1
command2
popd
done
и не было errexit
охранника, сбой pushd
или popd
не повлияет на остальную часть скрипта. Это может привести к запуску command1
и command2
в неправильном каталоге, а затем, возможно, возврату в другой каталог , не связанный с этим кодом. Это могло иметь катастрофические последствия.
Наконец, я бы сказал, чтоpushd
+ команды + popd
является анти--паттерном , потому что он добавляет больше контекста (и, следовательно, когнитивных накладных расходов и риска )к языку, где сложный контекст это уже массовая проблема. Наиболее распространенный способ обойти это — передать путь (, идеально абсолютный ), командам, например:
for y in "$x"/*/
do
command1 "$y"
command2 "$y"
done
Иногда для отправки сообщений ПК требуется клавиатура. Вы пытались подключить USB-клавиатуру для процесса запуска?
Я постер, и это решение, безусловно, является хаком, но мне не удалось заставить работать какое-либо из этих общепринятых решений для Ubuntu 19.10:
Я создал USB-флешку для оперативной установки Ubuntu. Я вынул жесткий диск и вставил дополнительный USB-накопитель, чтобы выполнить пробную установку на него. Я взял свой планшет и сделал снимки процесса установки. Эти снимки были сделаны для справки. Я был осторожен, обращая внимание на активность чтения/записи USB на каждом этапе процесса установки.
Затем я подключил установочный USB-накопитель к безголовому компьютеру, к которому была подключена клавиатура, и включил его. Было сложно обойти биос, но я это сделал. Я подключил целевой жесткий диск для установки.
Затем я использовал клавиатуру для установки, не видя, что на самом деле происходит. Я использовал клавиши Tab и Enter большую часть времени для перемещения по программе установки. Однажды на экране пользователя и пароля я, конечно, использовал буквенно-цифровые клавиши.
Затем я попытался загрузить свой ноутбук с новой установкой USB. Это сработало. Я установил драйверы для монитора DiplayLink. Я установил монитор displaylink в качестве основного и удалил все остальные мониторы из использования. Я отключился.
Я поместил новый установочный USB-накопитель в безголовый компьютер, но теперь с подключенным монитором DisplayLink. Это сработало.