После преобразования некоторых данных в переменную я хочу напечатать только переменную, содержащую некоторые данные, в противном случае я не хочу печатать

#bash #shell

#bash #оболочка

Вопрос:

 #! /bin/bash

Var = `anil`

If [ -n "$Var" ] ; then
echo " nn"
else
echo "emp" 
fi
  

Этот код не работает
Выводится как будто: синтаксис expressuin

Комментарии:

1. Всякий раз, когда у вас возникает ошибка сценария оболочки, хорошим первым шагом является вырезание и вставка вашего кода в shellcheck. очистите и исправьте ошибки (важные) и предупреждения (могут быть важными), которые она идентифицирует. Если у вас возникли проблемы с пониманием ее сообщений, тогда подойдите сюда и спросите. В этом случае вы обнаружите, что в вашем скрипте есть проблемы как с пробелами, так и с заглавными буквами.

2. @Anil: Вы нигде не используете grep в своем коде — кроме синтаксических ошибок в вашем скрипте.

3. Похоже, у вас ошибка в написании if .

Ответ №1:

Синтаксические ошибки в вашем фрагменте:

 #!/bin/bash

Var=`grep something somefile`

if [ -n "$Var" ] ; then
echo " nn"
else
echo "emp"
fi
  

Ответ №2:

если «anil» — это строка, а не команда, это должно быть похоже Var="anil" . Если это команда, она должна быть Var=$(anil) . В обоих случаях, хотя в ней не должно быть пробелов. Также ваше значение if должно быть в нижнем регистре.

 #!/bin/bash
Var=`grep -i error anvil.txt`
if [ -n "$Var" ] ; then
echo " nn"
else
echo "emp"
fi
  

Комментарии:

1. #!/bin/bash set var = grep - i error anil.txt if [ -n «$Var»] ; затем echo «not empty», иначе echo «empty» fi

2. @Anil смотрите обновленный код в ответе. Точно скопируйте вставку и протестируйте.