Передача по каналу переменной удара в awk и хранение вывода

Проиллюстрировать мою проблему,

TEST="Hi my name is John"
OUTP=`echo $TEST | awk '{print $3}'`
echo $OUTP

Что я ожидал бы, что это, чтобы сделать передать переменную $TEST в awk и сохранить 3-е слово в $OUTP.

Вместо этого я добираюсь "Привет: не найденный", как будто это ожидает, что вход будет файлом. Если я передаю просто строку вместо переменной, однако, нет никакой проблемы. Каков был бы лучший способ приблизиться к этому?

Спасибо все!

8
задан Andrew Smith 22 March 2010 в 03:17
поделиться

4 ответа

#!/bin/bash
TEST="Hi my name is John"
set -- $TEST
echo $3

#!/bin/bash
TEST="Hi my name is John"
var=$(echo $TEST|awk '{print $3}')
echo $var
21
ответ дан 5 December 2019 в 05:44
поделиться

Один из способов воспроизвести подобное поведение :

$ alias echo='echo;'
$ echo Hi
Hi: command not found
$ alias
alias echo='echo;'
$ unalias echo
$ echo Hi
Hi
0
ответ дан 5 December 2019 в 05:44
поделиться

Ваш код работает для меня, как есть.

[bloom@little-cat-a ~]$ TEST="Hi my name is John"
[bloom@little-cat-a ~]$ OUTP=`echo $TEST | awk '{print $3}'`
[bloom@little-cat-a ~]$ echo $OUTP
name
3
ответ дан 5 December 2019 в 05:44
поделиться

Как и другие, у меня это работает как есть, но, возможно, добавление двойных кавычек ( ") вокруг $ TEST в строке 2 может помочь. Если нет, то более конкретно информация о системе, в которой вы используете bash, может помочь.

1
ответ дан 5 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: