Поскольку числа заполнены нулями до одинаковой ширины, числовой порядок идентичен лексикографическому порядку. Поэтому проблема эквивалентна удалению файлов, начиная с данного файла в лексическом порядке.
Это можно сделать, построив строку, содержащую имена файлов, разделенные новыми строками, и используя подстановку строк для удаления конца строки, а затем опираясь на расширение без кавычек, чтобы превратить усеченную строку обратно в список. Я предполагаю, что в именах файлов нет новых строк и что ваша оболочка bash или ksh (с простой sh, вы должны использовать позиционные параметры вместо именованного массива).
nl=$'\n' # newline, we use it as a separator
cut_from=A0000096.LOG
log_files=(A???????.LOG)
set -f; IFS="$nl" # disable wildcard expansion and set the word separator to newline only
log_files="$nl${log_files[*]}$nl" # turn the array into a string with newlines separating elements
log_files=(${log_files%"$nl$cut_from$nl"}) # remove elements from $cut_from onwards and split the string into an array
unset IFS; set +f
rsnyc -a "${log_files[@]}" … elsewhere:/some/dir
-121--145452- Оказалось, что при компиляции ядра Linux мне не удалось включить поддержку шины PCIE для brcmfmac. Для этого запустите make menuconfig
и перейдите по ссылке
Device drivers
- Network device support
- Wireless LAN
- PCIE bus interface support for FullMAC driver
и включите поддержку шины PCIE.
-121--185319-Использовать
bar1+=($(echo $foo | awk '{print$1}'))
, т.е. переменная + = ( значение )
для добавления значения в массив.
Конечно, код для использования массив bar1
должен выглядеть как
for foo in "${bar1[@]}"
do
echo "$foo"
done
Конечно, всегда следует цитировать переменные оболочки
(например, "$ foo"
и "$ {bar1 [@]}"
), если у вас нет веской причины,
и вы уверены, что знаете, что делаете.
Según la sugerencia de Olorin de ver el error del nodo, lo exploré más. A pesar del hecho de que node -v
para someuser
devolvía v9.4.0
y el comando locate
no encontraba ninguna versión v8
instalada para ningún usuario, y tenía -instalado node
, todavía estaba recibiendo el mismo error. El siguiente comando funciona. Tenga en cuenta elsource ~/.nvm/nvm.sh;
#!/bin/sh
/bin/su tstapps -c "
cd /opt/app1/;
git remote update;
git pull origin dev;
cd /opt/app1/client/;
source ~/.nvm/nvm.sh;
npm run build;
En un momento tuve nvm use v9.5.0
y luego probé, todavía funciona sin él. Luego eliminé source ~/.nvm/nvm.sh;
y se rompió nuevamente. Entonces, aparentemente, el nvm
no está disponible enshell-scripts
env
sin obtenerlo y el npm run build
necesita ver nvm
.
Problema extraño y parece que algunos usuarios se encontraron con problemas similares al usar nvm
recursos en bash
según este hilo . Todavía no estoy seguro de dónde estaba obteniendo el v8
. A menos que obtenga v8
del directorio include/node
de las instalaciones v9
. Ejemplo:
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-platform.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-profiler.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-testing.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-util.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-value-serializer-version.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-version-string.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8-version.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8.h
/home/someuser/.nvm/versions/node/v9.5.0/include/node/v8config.h
По крайней мере, на RedHat 6 обратите внимание, что если LC _ALL установлен, то установка других переменных окружения LC _*не будет иметь никакого эффекта, так как LC _ALL имеет приоритет над всеми остальными окружениями LC _*. переменные.
[root@nbu76 bin]# LC_TIME=en_US.UTF-8
[root@nbu76 bin]# export LC_TIME
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_IE"
LC_NUMERIC="en_IE"
LC_TIME="en_IE"
...
LC_ALL=en_IE
[root@nbu76 bin]# unset LC_ALL
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
...
LC_ALL=
[root@nbu76 bin]# export LC_TIME=en_IE
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_IE
....
LC_ALL=
-121 ---24642 -env -i
очищает среду, включая переменную PATH
, которая используется для поиска команд, если вы не указали полный путь. Итак, с env -i
вам нужно указать полный путь к вызываемым командам. С npm
, что, вероятно, происходит, так это то, что npm
сам по себе является сценарием, который имеет #! /usr/bin/env node
в качестве шебанга, поэтому поиск команды node
завершается ошибкой.
Если вам нужно очистить окружающую среду, попробуйте один из способов:
sudo -iu someuser sh -c "...."
su someuser - -c "...."
(обе эти команды запускают оболочки входа в систему с некоторой очисткой среды)или, с помощью env
, сохраните некоторые переменные среды, как это делает команда Ubuntu service
:
$ grep env $(command -v service) -m1
out=$(env -i LANG="$LANG" LANGUAGE="$LANGUAGE" LC_CTYPE="$LC_CTYPE" LC_NUMERIC="$LC_NUMERIC" LC_TIME="$LC_TIME" LC_COLLATE="$LC_COLLATE" LC_MONETARY="$LC_MONETARY" LC_MESSAGES="$LC_MESSAGES" LC_PAPER="$LC_PAPER" LC_NAME="$LC_NAME" LC_ADDRESS="$LC_ADDRESS" LC_TELEPHONE="$LC_TELEPHONE" LC_MEASUREMENT="$LC_MEASUREMENT" LC_IDENTIFICATION="$LC_IDENTIFICATION" LC_ALL="$LC_ALL" PATH="$PATH" TERM="$TERM" "$SERVICEDIR/$SERVICE" status 2>&1)
Вероятно, вам все это не нужно, но оставьте $PATH
, $TERM
и, возможно, установите LC_ALL=C
.