prueba el siguiente código.
#!/bin/bash
var=$(df -h | sed -n 2p |awk '{ print $4 }')
if [ "${var}" le "15" ]
then
./bin/dss stop
rm -rf tmp/*
rm -rf caches/*
./bin/dss start
fi
Существует ряд вариантов для рассмотрения:
Просто выполнение FOO=bar
создает переменную с именем FOO
со значением bar
, но эта переменная не передается новым процессам:
$ echo $FOO
$ FOO=bar
$ echo $FOO
bar
$ bash # Start a new bash process
$ echo $FOO
# Variable is not set in the new process
$ exit # Exit new bash process
Запуск FOO=bar <command>
запустит данную команду с набором переменных (, но не повлияет на исходную среду оболочки):
$ echo $foo
$ FOO=baz bash # start a new bash process
$ echo $FOO
baz
$ exit # exit the new bash process
exit
$ echo $FOO
# No FOO in the original bash process
$
Выполнение FOO=foo; <command>
эквивалентно (1 ); помещение точки с запятой между двумя командами эквивалентно запуску этих двух команд в двух отдельных строках:
$ FOO=foo; echo $FOO
foo
$ bash
$ echo $FOO
$ exit
exit
$ echo $FOO
foo
$
Использование export
приведет к передаче переменной в среде оболочки вновь -созданным процессам:
$ export FOO=bar
$ echo $FOO # Value set in original shell
bar
$ bash # Start another shell
$ echo $FOO
bar # Value was passed along to new process
$ exit
exit
Нет, FOO=бар; не экспортирует переменную в мою среду
Переменная устанавливается в (текущей )среде, только если она была ранее экспортирована:
$ export foo
$ foo=bar
$ env | grep foo
foo=bar
Переменная устанавливается в окружении команды, когда она помещается перед командой. Например foo=bar command
. И он существует только во время выполнения команды.
$ foo=bar bash -c 'echo "foo is = $foo"'
foo is = bar
Переменная не установлена для командной строки (в настоящей оболочке):
$ foo=bar bash -c echo\ $foo
Выше значение $foo
заменяется ничем на текущую работающую оболочку , поэтому :не выводится.
Ваша команда:
$ FOO=bar docker run -it -e FOO=$FOO debian env
преобразуется в фактическую строку:
$ FOO=bar docker run -it -e FOO= debian env
текущей работающей оболочкой .
Если вместо этого вы установите переменную (в текущей запущенной оболочке )с помощью foo=bar
перед запуском команды, строка будет преобразована в:
$ FOO=bar; docker run -it -e FOO=bar debian env
Переменная, установленная для среды команды, стирается, когда команда возвращает значение:
$ foo=bar bash -c 'echo'; echo "foo was erased: \"$foo\""
За исключением , когда команда является встроенной в некоторых условиях/оболочках:
$ ksh -c 'foo=bar typeset baz=quuz; echo $foo'
bar