Переменная настройки Bash со значением команды

#bash #variables

#bash #переменные

Вопрос:

         #echo $LINE |cut -f"${arg}" -d' '
    pom=$LINE |cut -f"${arg}" -d' '
  

У меня есть эта двухполосная. Первое работает, а второе нет. Я хочу, чтобы переменная получала значение этой команды, потому что я хочу использовать это значение как строку.

Ответ №1:

Вам нужно запустить первую строку, затем присвоить возвращаемое значение переменной. Вы делаете это с помощью команды внутри обратных ссылок, вот так:

 pom=`echo $LINE |cut -f"${arg}" -d' '`
  

Причина, по которой вторая строка не работает, заключается в том, что то, что находится в $LINE , скорее всего, не является допустимой командой, а каналы принимают выходные данные из команд, поэтому вам нужно echo выводить содержимое $LINE .

Ответ №2:

Такой код не рекомендуется :

 pom=`echo $LINE |cut -f"${arg}" -d' '`
  

в пользу :

 pom=$(echo "$LINE" | cut -f"${arg}" -d' ')
  

Обратная кавычка ( ) is used in the old-style command substitution, e.g. foo= команда`. Вместо этого рекомендуется использовать синтаксис foo=$(command). Обработка обратной косой черты внутри $() менее удивительна, а $() проще вложить. Смотрите http://mywiki .wooledge.org/BashFAQ/082

Ответ №3:

Если в СТРОКЕ нет пустых полей (т. Е. повторяющихся пробелов), вы также можете использовать чистый bash:

 ITEMS=($LINE)
pom=${ITEMS[arg]}
  

Обратите внимание, что в этом случае значение $arg равно нулю, поэтому вам может потребоваться использовать [arg-1].