フォルダ名を変数として使用して、各フォルダに対してコマンドを繰り返すスクリプトをどのように実行できますか?

フォルダ名を変数として使用して、各フォルダに対してコマンドを繰り返すスクリプトをどのように実行できますか?

私はrcloneを使用しており、そのリモコンと名前を共有するフォルダを作成して自動的にリモコンをマウントするスクリプトを作成したいと思います。

私のディレクトリ構造は、/home/user/remotes/マウントポイントとして使用される合計5つのフォルダです。

実行時にリモートディレクトリを参照し、各フォルダに対してインストールコマンドを実行するスクリプトを作成する方法を学びたいと思います。

スクリプトによって生成されたコマンドは次のとおりです。

rclone mount FolderName1: /home/user/remotes/FolderName1 --flags

rclone mount FolderName2: /home/user/remotes/FolderName2 --flags

理想的には、スクリプトは各フォルダに対して上記のコマンドを自動的に生成するため、今後の作業はマウントポイントとして使用するフォルダを作成することです。 (私はスクリプトをcronジョブとして実行してリモートでスキャンすることを計画しています。目次)。

これを行う方法はありますか?

答え1

最も簡単な方法は、すでに使用しているコマンドをスクリプトに入れることです。

#!/bin/sh
rclone mount remote:path/to/files_1 /path/to/local/mount_1
rclone mount remote:path/to/files_2 /path/to/local/mount_2
rclone mount remote:path/to/files_3 /path/to/local/mount_3

自動方式は少しトリッキーです。

#!/bin/sh

# get a list of directory names
dirs=$(rclone lsf --dirs-only remote:path/to/dirs)

# assuming you do not have a directory with a space in a name
for dir in $dirs
do
   # ensure you have a mount point
   mkdir -p /path/to/local/$dir

   # and mount it
   rclone mount remote:path/to/$dir /path/to/local/$dir
done

関連情報