команда find не дает никакого вывода

Кто-нибудь знает, почему эта команда не дает мне никакого результата? все переменные правильны, но результата нет.

 найти .  -name "$ cdr_type * $ DAYZ * .unl *" |
   xargs zcat |
   awk -F "|"  '{if ( $ 14 == $ tdate && $ 22 == $ misdn) print $ 0}' |
   глава

Когда я повторяю команду, подобную этой

echo "find . -name $cdr_type*$DAYZ*.unl* | xargs zcat | awk -F | '{if($14==$tdate && $22==$misdn) print $0}'|head" 

вот мой вывод:

  найти .  -name mgr * 20160928 * .unl * |
   xargs zcat |
   awk -F |  '{if ( 4 == 20160928093911 && 2 == 2348094398953)}' |
   глава

Мое наблюдение – это показ $ 4 и $ 2 вместо $ 14 и $ 22

One Solution collect form web for “команда find не дает никакого вывода”

$14 при расширении оболочки в большинстве оболочек, подобных Bourne, совпадает с ${1}4 , и если $1 пуст или не задан, это дает 4 как ожидалось. Здесь вы хотите передать litteral $14 в awk чтобы awk рассматривал его как свое 14-е поле.

Обычно в одинарных кавычках переменная $1 не будет расширяться, но вы не сообщаете нам, как вы эхо от этой команды.

В любом случае, здесь, похоже, вы хотите:

 find . -name "$cdr_type*$DAYZ*.unl*" -exec zcat {} + | awk -F "|" -v tdate="$tdate" -v misdn="$misdn" ' $14 == tdate && $22 == misdn' | head 

Это пропускает содержимое переменных $tdate и $misdn shell как переменные awk .

  • dirname и basename против расширения параметров
  • Вставка переменных в команду в сценарии оболочки
  • Как передать переменную в sftp?
  • Функция проверки переменной BASH
  • Как сохранить статус последнего выхода после теста
  • Как выбрать количество цифр в переменной в моих сценариях?
  • Сценарий Bash для заполнения шаблона
  • Объявление переменной параллельным sh -c ...
  • Отложить переменное расширение до подоболочки
  • команда `read` не работает в Makefile
  • bash - определяющие переменные с VAR = $ {: - по умолчанию}
  • Linux и Unix - лучшая ОС в мире.