сценарий оболочки устанавливает числа по умолчанию как двузначный ноль в качестве префикса

Частичный ответ:

X-серверы могут прослушивать как сокет домена unix (для локальных подключений ), так и TCP-порт (6000 + отображаемый номер ). Последний по умолчанию отключен на современных серверах, что может быть причиной того, что вы не можете подключиться.

Итак, на сервере, к которому вы хотите подключиться (7 ВМ ), выполните ps axu | grep Xили подобное и посмотрите на командную строку, с которой был запущен X-сервер. Если есть -nolistenили -nolisten tcp, его нужно убрать; и вы должны добавить -listen tcp.

Существует несколько способов запуска X-сервера, и я не знаю, какой из них используется в вашей системе. Итак, посмотрите на идентификатор родительского процесса (PPID )процесса X, сделайте еще несколько вызовов psи посмотрите, сможете ли вы это понять. Может быть диспетчером отображения (, например. gdm или kdm )или, возможно, systemd. Что бы ни началось, его необходимо настроить для этих параметров командной строки.

Если сервер правильно прослушивает порт 6000, следующим шагом будет проверка правил брандмауэра (iptables ).

0
09.11.2020, 15:04
2 ответа

Я думаю, что это возможно, упрощая:

for i in {1..11}; do  
    n_month=$(($i + 1))
    [[ $n_month =~ ^[0-9]$ ]] && n_month="0$n_month"
    echo "$n_month"
done

Output

02
03
04
05
06
07
08
09
10
11
12
0
18.03.2021, 22:51

Не используйте ведущие нули в переменных, где вы хотите хранить десятичные значения, потому что в различных контекстах число с ведущим нулем интерпретируется как восьмеричное . Арифметическое расширение является одним из таких контекстов. Следующий код не работает:

i1=09
i2=$((i1+1))

пока этот работает:

i1=9
i2=$((i1+1))

Добавляйте ведущие нули только при печати результатов. Сделайте это, используя printfв правильном формате. Пример:

i1=9
i2=$((i1+1))
year1=2020
year2=2020

printf "Processing data '%04d-%02d-01 00:00:00' and '%04d-%02d-01 00:00:00'\n" "$year1" "$i1" "$year2" "$i2"


Обратите внимание, что когда printfожидает число, он интерпретирует строку с ведущим нулем как восьмеричное число. Так что это еще один контекст, где вам нужно быть осторожным. Пример:

$ printf '%02d\n' 9
09
$ printf '%02d\n' 09
printf: '09': value not completely converted
00
$ printf '%02d\n' 012
10

Это означает, что хотя printf %02dможет быть решением, если вы избегаете ведущих нулей, это может быть ошибкой, если вы этого не делаете.

5
18.03.2021, 22:51

Теги

Похожие вопросы