Как получить полный оператор, используя UNIX Команды - PullRequest
0 голосов
/ 19 февраля 2020

Мы используем Oracle Приложения, где мы также разрабатываем программы с использованием UNIX. В нашей программе Oracle Apps UNIX во время ее выполнения мы передадим параметры, а значения параметров будут сохранены в виде значения $ 1. И этот $ 1 будет также содержать другую информацию, такую ​​как экземпляр, то есть идентификатор программы, имя пользователя, запустившего программу, и идентификатор пользователя и т. Д. c., Как показано ниже

XX_VENDOR_ACH_HOST FCP_REQID=9946271 FCP_LOGIN="APPS/trn12fnd" FCP_USERID=127 FCP_USERNAME="USERNAME" FCP_PRINTER="noprint" FCP_SAVE_OUT=Y FCP_NUM_COPIES=0 "TEST Pay Batch 021120-c"

здесь, TEST Pay Batch 021120- c является единственным значением параметра. Теперь мне нужно получить значение этого параметра. Итак, я написал команду следующим образом:

echo $1 | cut -d" " -f9 | sed 's/"//g'

Но это всего лишь вывод слова TEST , а не полное значение. Может кто-нибудь, пожалуйста, помогите мне с полной командой для получения TEST Pay Batch 021120- c

С уважением, Шриватсава

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Предположим;

  • Значение параметра заключено в двойные кавычки
  • Значение параметра находится в конце $1

тогда как насчет

echo "$1" | sed 's/.*"\([^"]\+\)"$/\1/'

, который выдает:

TEST Pay Batch 021120-c

Если мои предположения неверны и если строка значения параметра имеет некоторые отличительные характеристики (например, она начинается с TEST Pay Batch), пожалуйста, дайте мне знать. Затем я настрою регулярное выражение для извлечения значения параметра.

0 голосов
/ 28 февраля 2020

Предполагая, что значение параметра находится в конце $1, что-то вроде может сделать работу:

echo $1|awk -F\" '{print $(NF-1)}'
...