Syntaksfejl: “forventet heltal udtryk”

Это, вероятно, то, что вам нужно

my_command> output.log 2> & 1 &

это запустит вашу команду, перенаправляя как stdout, так и stderr в некоторый output.log , который вы можете указать. Если вам вообще не нужно сохранять вывод - вы можете использовать / dev / null вместо фактического файла.

& выполнит команду в фоновом режиме, чтобы вы могли продолжать вводить команды во время ее выполнения. 2> & 1 перенаправляет stderr на stdout, чтобы перехватить весь вывод.

также, когда вы запускаете такую ​​команду, вы должны получить подтверждение от ядра, подобное этому: [2] 1234 Это означает, что ваш процесс выполняется в фон и его идентификатор - 1234 , поэтому вы можете убить его позже, если хотите, с помощью kill -9 1234

2
13.04.2018, 20:44
1 ответ

Вам нужно использовать $для расширения temp в оболочке. (Поскольку ваш сценарий написан, вы пытаетесь сравнить литеральную строку tempс целым числом0). Вы также должны процитировать его:

x=5.44
p=0
temp=$(printf "%.*f\n" $p $x)
echo "$temp"
if [ "$temp" -gt 0 ]
then
  echo "inside"
fi

Если вы используете bash, лучшим способом сделать это будет использование арифметического выражения bash, например:

x=5.44
p=0
temp=$(printf "%.*f\n" $p $x)
echo "$temp"
if ((temp>0)); then
  echo "inside"
fi

Внутри арифметического выражения ((…))вам не нужен $для расширения, и вы не можете заключать в кавычки.

11
27.01.2020, 21:49

Теги

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