Переменная AWK передать команду - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь передать $ 9 в мою выполненную команду php, используя awk.Однако $ 9 никогда не попадает в команду.Если я вручную устанавливаю значение для param1, все работает.

cat file.name | awk -v date="$(date +"%Y-%m-%d %H:%M:%S")" '{
 x="'"`/usr/bin/php-cgi -f /path/hex2bin.php param1=$9`"'"
print "New value: ",$x
}'

1 Ответ

0 голосов
/ 14 декабря 2018

1-ая точка : Хотя я не эксперт по php, я обычно видел команды оболочки, запускаемые под командой exec.

2-й пункт: Вам не нужно использовать cat с awk.awk может прочитать любой файл Input_file, переданный ему.например -> awk '........' Input_file

Попытка исправить свой код: Так как вы НЕ упомянули, почему вы печатаете переменную x снова в awkпрограмма + почему date упоминается в переменной, но не используется?

То, что я делаю здесь, вызывает скрипт php, передавая $9 с экранированием $ в нем awk.system команда (без примеров я не могу выполнить эту команду).

awk -v s1="'" -v s2="\"" -v date="$(date +"%Y-%m-%d %H:%M:%S")" '
{
  system(s1 "/usr/bin/php-cgi -f /path/hex2bin.php param1= " s2 "$9" s1)
}'  Input_file

Но есть 1 вещь, используя команду system в awk, вы сможете выполнять другие команды / оболочкиПо этой причине, поскольку он выполняет команды в другой суб-оболочке, поэтому вы НЕ сможете взять его выходное значение в переменную awk, эксперты могут исправить меня, если я что-то здесь упустил.

РЕДАКТИРОВАТЬ: Или попробуйте использовать сам цикл.

while read line one two three four five six seven eight nine ten
do
   new_variable=$(your_php_command "$nine")
   echo "Use here new_variable...."
done < "Input_file"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...