LinuxForum.Fans
Тема

Помогите найти ошибку в командном файле(Shell)

Автор: hard_reset 8 сообщений 4122 просмотров
#259092

Доброго времени суток,
echo "enter command:"
read X
echo "enter key:"
read Y
$X --help | awk '$1 == "$Y"'

есть подозрения, что $Y не дружит с ковычками, вот как эту проблему решить? Пробовал перед каждой ковычкой поставить \ - ругается на синтаксис

#259093

внутри одинарных кавычек разыменование не происходит. надо так:

text
awk '$1 == '"$Y"
#259096

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

text
ps --help | awk ' == '-A

а надо:

text
ps --help | awk ' == "-A"'

вот как это сделать? *TIRED*

PS
добился чего хотел таким образом:

text
awk '$1 == \"$Y\"'

echo высвечивает всё как надо, но если его убрать вылазят ошибки:

text
awk: cmd. line:1: $1 == \"$Y\"
awk: cmd. line:1:       ^ backslash not last character on line
awk: cmd. line:1: $1 == \"$Y\"
awk: cmd. line:1:       ^ syntax error
#259097
"hard.reset" написал:
вот как это сделать?

А что именно вы хотите получить в итоге?

#259098

в итоге хочу, чтобы командный файл выводил справку по ключу для конкретной команды

#259100
"hard.reset" написал:
в итоге хочу, чтобы командный файл выводил справку по ключу для конкретной команды

Неудачный пример вы выбрали ;)

text
lupo@gentoo-laptop ~ % ps --help                                                                        [gentoo-laptop][23:42]

Usage: ps [options]

Try 'ps --help <simple|list|output|threads|misc|all>' or 'ps --help <s|l|o|t|m|a>' for additional help text.

For more details see ps(1).

Можно так:

text
lupo@gentoo-laptop ~ % ps --help all | grep '^ -A'                                                      [gentoo-laptop][23:45]
 -A, -e               all processes

...или так

text

lupo@gentoo-laptop ~ % ps --help all | awk '/-A/ {print}'                                               [gentoo-laptop][23:45]
 -A, -e               all processes
#259103

спасибо огромнейшее, помогло :)

#259104

...так более корректно будет работать:

text
ps --help all | awk '/^[[:space:]]*-A/ {print}'
Войдите или зарегистрируйтесь, чтобы ответить.