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 на $() для замены команд, удалил мертвых кошек и добавил двойные кавычки.

  • Как распространять значение переменной
  • Присвоение нового значения непосредственно в индекс символа значения в массиве с zsh
  • Как использовать расширенное значение переменной оболочки в имени другой переменной?
  • Чтение переменных без bash из файла в скрипт bash
  • grep переменная в выражении if
  • Могу ли я определить тип переменной awk?
  • Создание функции, отображающей имя переменной и ее значение
  • Как сохранить статус последнего выхода после теста
  • как получить или отразить имя вызываемой функции bash?
  • Как передать переменную в sftp?
  • bash - добавить пустую строку в heredoc через переменную
  • Linux и Unix - лучшая ОС в мире.