Это условие "ИЛИ".
Для упрощенного примера давайте посмотрим на
cmd1 || cmd2
Что произойдет, если cmd1 будет успешной (т.е. код выхода 0), то cmd2 НЕ будет выполнена. cmd2 будет выполнена только в том случае, если cmd1 будет неудачной.
Это одна из причин, по которой возврат кодов выхода так важен.
BTW, эта функция присутствовала в очень старых UNIX оболочках, так как в старом sh. не было выражений IF. Конечно, это было еще до того, как существовал csh.
perl -pe 'printf "%d ", .5+$./2'
-121--228821- Пока что для меня сработало просто найти файл /lib/udev/rules.d/97-hid2hci.rules
.
Найдите эту запись и прокомментируйте ее:
# Logitech devices
KERNEL=="hiddev*", ATTRS{idVendor}=="046d",
ATTRS{idProduct}=="c70[345abce]|c71[3bc]", \
RUN+="hid2hci --method=logitech-hid --devpath=%p"
Она должна выглядеть следующим образом.
# Logitech devices
#KERNEL=="hiddev*", ATTRS{idVendor}=="046d",
ATTRS{idProduct}=="c70[345abce]|c71[3bc]", \
# RUN+="hid2hci --method=logitech-hid --devpath=%p
Сохраните файл, отключите и повторно подключите приемник, он работает нормально.
Единственная проблема, которую я вижу, заключается в том, что она может быть перезаписана в обновлениях. Мне еще предстоит найти лучшее решение.
-121--151149-for csvfile in */*.csv
do
echo "Processing $csvfile"
done
Предполагается, что все каталоги находятся в текущем каталоге. Если они не являются, пожалуйста, обновите ваш вопрос, чтобы показать, где они на самом деле.
Используйте это:
find dir1/ -maxdepth 1 -type f -iname "*.csv" -print0 | while IFS= read -r -d '' f; do
# process file
echo "$f"
done
find
ищет только файлы (-type f
) с окончанием .csv
(-iname "*.csv"
), только в dir1
и не в его подкаталогах (-maxdepth 1
). Имена файлов печатаются разделенными нулевым символом (-print0
), чтобы справиться со специальными именами файлов. while
считывает входные данные, разделенные нулевым символом, и сохраняет имя файла в переменной $f
.