BASH, «touch» и «ln-s» внутри для цикла

#bash #for-loop #syntax #touch

#bash #for-цикл #синтаксис #прикосновение

Вопрос:

при выполнении этого кода я получаю эту ошибку:

синтаксическая ошибка рядом с неожиданным (' касанием токена FILE $i FILE ($ i 1); ‘

что не так?

 #!/bin/bash

  for ((i=1; i<=99; i   ));
    do        
    touch FILE$i FILE($i 1);
    ln -s FILE$i FILE($i 1);
       
     done


  

Комментарии:

1. Не по теме: когда вы собираетесь ln -s FILE 1 FILE2 , вам не нужно сначала касаться FILE2. Ваш код пытается создать цепочку символических ссылок. Вы уверены, что хотите этого, или хотите, чтобы FILE2, .., FILE99 были связаны с FILE1. В этом случае вы можете захотеть touch FILE1; for ((i=2;i<=99;i ));do ln -s FILE$i; done .

Ответ №1:

Для выполнения арифметических действий используйте $((...)) синтаксис:

     touch FILE$i FILE$(($i 1))
  

См https://www.gnu.org/software/bash/manual/bash.html#Arithmetic-Expansion