Оператор If внутри оператора case

Архивные файлы дистрибутива включают образец dnscrypt-proxy.service.

В качестве альтернативы вы можете просто использовать тот, который предлагается в официальных бинарных пакетах -- при необходимости измените пути

[Unit]
Description=DNSCrypt client proxy
After=network.target
Before=nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/sbin/dnscrypt-proxy /etc/dnscrypt-proxy.conf

[Install]
WantedBy=multi-user.target

0
27.02.2017, 21:14
2 ответа

У вас несколько проблем с этим скриптом.

Отсутствующий " находится в строке 31:

echo "$OUTPUT "|" $FS "GB round"

Вы также используете awk {'print $ 1'} вместо awk '{print $ 1}' .

Чтобы увидеть полный список синтаксических проблем, вставьте свой сценарий в ShellCheck .

Есть также ряд вещей, которые можно было бы сделать лучше, например, убрать несколько вызовов du -b $ OUTPUT | awk {'print $ 1'} только для одного вызова (упрощает обслуживание).

Вам также не хватает нескольких двойных кавычек вокруг расширений переменных.

2
28.01.2020, 02:19

Я подключу shellcheck.net , так как он помог ответить на этот вопрос. Он пожаловался:

^ - SC1079: На самом деле это конечная цитата, но из-за следующего символа это выглядит подозрительно.

Действительно, в строке 31 у вас есть:

if [[ $FS == ^[0-9]*$ ]]; then echo $OUTPUT "|" $FS "GB" ;elif [[ $FS == ^[0-9]*[.][0-9]*$ ]]; then echo "$OUTPUT "|" $FS "GB round"; fi

если мы разберем это для удобства чтения, это:

if [[ $FS == ^[0-9]*$ ]]
then 
  echo $OUTPUT "|" $FS "GB"
elif [[ $FS == ^[0-9]*[.][0-9]*$ ]]
then 
  echo "$OUTPUT "|" $FS "GB round"
fi

... в этот момент легче увидеть, что самый последний echo "$ OUTPUT содержит несбалансированные котировки.

2
28.01.2020, 02:19

Теги

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