Проиллюстрировать мою проблему,
TEST="Hi my name is John"
OUTP=`echo $TEST | awk '{print $3}'`
echo $OUTP
Что я ожидал бы, что это, чтобы сделать передать переменную $TEST в awk и сохранить 3-е слово в $OUTP.
Вместо этого я добираюсь "Привет: не найденный", как будто это ожидает, что вход будет файлом. Если я передаю просто строку вместо переменной, однако, нет никакой проблемы. Каков был бы лучший способ приблизиться к этому?
Спасибо все!
#!/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
Один из способов воспроизвести подобное поведение :
$ alias echo='echo;'
$ echo Hi
Hi: command not found
$ alias
alias echo='echo;'
$ unalias echo
$ echo Hi
Hi
Ваш код работает для меня, как есть.
[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
Как и другие, у меня это работает как есть, но, возможно, добавление двойных кавычек ( "
) вокруг $ TEST
в строке 2 может помочь. Если нет, то более конкретно информация о системе, в которой вы используете bash, может помочь.