Это было бы:
until [ -e filename.txt ]; do
./Server
done
То же, что и:
while [ ! -e filename.txt ]; do
./Server
done
В Linux вы также можете:
while true; do
# wait for filename.txt to be removed if it's there:
inotifywait -qe DELETE_SELF filename.txt 2> /dev/null
./Server
done
Предотвратить запуск Server
только при наличии файла, но запустить его снова, как только он будет удален.
Если вы являетесь администратором на машине, имеет смысл добавить ее в качестве службы, обрабатываемой вашей системой инициализации, которая позаботится о ее правильной демонизации, перезапуске (возрождении )при неожиданном выходе, если это необходимо. и т. д. Затем вы должны выполнить service whatever stop
перед редактированием и start
после.
Попробуйте этот синтаксис:
admin@srv-web:~$ cat test.sh
#!/bin/bash
cat > test.conf << 'EOF'
AA=${one:-["one","two"]}
EOF
и результат:
administrateur@srv-web:~$./test.sh ; cat test.conf
AA=${one:-["one","two"]}
Странная обработка котировок внутри расширений.
Это делает то, что вы хотите...
$ echo "${one:-["\"one\"","\"two\""]}"
["one","two"]
Но здесь по-другому -документ...
$ cat <<EOF
> ${one:-["\"one\"","\"two\""]}
> EOF
[\"one\",\"two\"]
Наверное, проще всего поместить значение по умолчанию в переменную:
$ def_one='["one","two"]'
$ cat <<EOF
> ${one:-$def_one}
> EOF
["one","two"]