Переменная настройки Bash со значением команды - PullRequest
0 голосов
/ 07 ноября 2011
        #echo $LINE |cut -f"${arg}" -d' '
    pom=$LINE |cut -f"${arg}" -d' '

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

Ответы [ 3 ]

3 голосов
/ 07 ноября 2011

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

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

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

2 голосов
/ 07 ноября 2011

Этот тип кода не рекомендуется:

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= command`. Синтаксис foo = $ (command)Вместо этого рекомендуется использовать обратную косую черту внутри $ (), а $ () проще вкладывать. См. http://mywiki.wooledge.org/BashFAQ/082

1 голос
/ 07 ноября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...