Удар Cómo guardar una salida de comando en переменная

Necesito poder guardar una salida de un comando en una variable para luego poder utilizarla. Actualmente, estoy haciendo así pero никакой funciona:

nuevaExtension = $(awk 'NR=='$contador $directorio)
echo $nuevaExtension

Никакая logro сабля предшествующий cómo es la sintaxis para almacenar la salida del comando.

4
задан 11.10.2016, 14:35
4 ответа

Как прокомментировали ранее другие пользователи, правильное а именно:

var=$(comando)

У меня не остается ясным, что ты хочешь сделать с awk 'NR=='$contador $directorio но вероятно ты хочешь написать из-за экрана линию, данную в переменной $contador. Для этого, рекомендуемо использовать -v чтобы перемещать параметры:

awk -v numero_linea="$contador" 'NR==numero_linea' "$directorio"
#   ^^^^^^^^^^^^^^^^^^^^^^^^^^^      ^^^^^^^^^^^^

Какие ошибки есть у твоей попытки?

  • В nuevaExtension = $(awk 'NR=='$contador $directorio):

Заметьте себе, что, когда ты говоришь var = $(comando) то, что ты делаешь, состоит в том, чтобы пробовать выполнять команду var с двумя параметрами: = и $(comando).

$ var = $(ls)
var: command not found
  • В echo $nuevaExtension

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

$ v="hola
> que tal"
$ echo $v
hola que tal   # ¿dónde está el salto de línea?
$ echo "$v"
hola           # ¡bien! se conserva el salto de línea
que tal
6
ответ дан 24.11.2019, 13:13

Я рекомендую тебе сохранять tambiГ©n то, что возвращает stderr, потому что, если команда бросает ошибку, не estarГ-хватайся сообщая.

var=$(comando 2>&1)

только stdout

var=$(comando)

Потом использует кавычки в echo asГ - уважает тебе разрывы линии.

echo="$var"

Пример

не уважает разрывы lГ-nea:

:~$ var=$(ps)
:~$ var=$(ps); echo $var
PID TTY TIME CMD 5516 pts/701 00:00:00 bash 21454 pts/701 00:00:00 ps

Уважает разрывы lГ-nea:

:~$ var=$(ps); echo "$var"
  PID TTY          TIME CMD
 5516 pts/701  00:00:00 bash
21743 pts/701  00:00:00 ps
3
ответ дан 24.11.2019, 13:13
  • 1
    var = $(comando) он неправильный, я не понимаю Ваш menci и # 243; n в ответе. –  fedorqui 11.10.2016, 14:29
  • 2
    я это протестировал в конечной остановке @fedorqui, из-за которого dec и # 237; s, что неправильный? –  Alan 11.10.2016, 14:59
  • 3
    Что работал, не означает, что он был правилен. В мой ответ подробно описал qu и # 233; происходи, выполнив эту команду. B и # 225; sicamente, с var = $(comando) выполнять команду var с двумя пара и # 225; метры = и '$ (команда). Следовательно, переменная не определяется. –  fedorqui 11.10.2016, 15:55
  • 4
    var не команда приятель и # 241; ero, и я не понимаю, потому что он не правилен. Я ищу documentaci и # 243; n и я нахожусь из-за всех сторон, которые схвати, и # 237; он делается. Но я принимаю то, что ты говоришь. –  Alan 11.10.2016, 16:01
  • 5
    Это - то, что говорю я: если ты хочешь распределить в переменную $var результат команды command, ты должен говорить var=$(command). Которое dec и # 237; в твой ответ до того, как ты издавал ее прямо сейчас это var = $(command), которые пробовать, и # 237; чтобы выполнять var как будто это была команда, pas и # 225; ndole пара и # 225; метры = и $(command). А именно, абсолютно отличная вещь. –  fedorqui 11.10.2016, 16:03
nuevaExtension=$(awk 'NR=='${contador}${directorio})

echo $nuevaExtension
-1
ответ дан 24.11.2019, 13:13

Ты можешь пытаться с:

OUTPUT="$(ls -l)"
echo "${OUTPUT}"
0
ответ дан 24.11.2019, 13:13
  • 1
    лучше не использовать имена переменной в mayú scula, так как они могут сталкиваться с переменными окружения и liá rtela –  fedorqui 25.08.2017, 13:47