#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].