Shell: как использовать 2 переменные с условием

Пожалуйста, помогите мне использовать 2 переменные с условием. Например,

cat days 01072017 02072017 03072017 cat hours 00:00 01:00 02:00 03:00 

мой образец сценария оболочки

  for i in `cat days` & j in `cat hours` do cat file | grep $i $j >data-$i-$j done 

Я хочу получить 3 дня * 4 часа = 12 файлов, перенаправленных с соответствующими данными-дневным часом, пожалуйста, помогите.

2 Solutions collect form web for “Shell: как использовать 2 переменные с условием”

Вы должны использовать вложенный цикл

  for i in `cat days` do for j in `cat hours` do cat file | grep "$i $j" >data-${i}-${j} done done 

Стандартным решением для такой задачи является создание двух циклов:

 for i in $(<days); do for j in $(<hours); do grep "$i $j" file > data-"$i-$j" done done 

Обратите внимание, что я сменил backticks на $() для замены команд, удалил мертвых кошек и добавил двойные кавычки.

  • Поведение задания массива
  • bash - добавить пустую строку в heredoc через переменную
  • Отложить переменное расширение до подоболочки
  • Использование «$ {a: -b}» для назначения переменных в скриптах
  • Bash: Объем переменных в цикле for с использованием тройника
  • команда `read` не работает в Makefile
  • Объем переменных при вызове функции из find
  • Создание функции, отображающей имя переменной и ее значение
  • захватить из текстового файла диапазон с использованием двух переменных в качестве начального и конечного параметров
  • Сценарий Bash для заполнения шаблона
  • Невозможно выполнить сценарий Bash, если / while
  • Linux и Unix - лучшая ОС в мире.