ディレクトリを追加する簡単なスクリプト

ディレクトリを追加する簡単なスクリプト

/media/userディレクトリを監視するスクリプトを生成しようとしています。新しいUSBが接続されると、スクリプトが実行され、新しいUSBドライブを使用しているプログラムに新しいディレクトリが追加されます。

たとえば、

for D in ls -l /media/user
do
    directory add -d D
done

現在のスクリプトは、特定のディレクトリ名ではなく文字通りディレクトリがある回数だけ/media/user/Dディレクトリを追加します。/media/user/media/user/D

このコマンドは、directory add -d私が追加したいディレクトリ/media/user/drive1などを追加します。/media/user/drive2

ありがとう、私は明らかに新しい人です!

ベストアンサー1

これは非常に基本的なbashの内容です。スクリプトを見てみましょう。

for D in ls /l /media/user
do

変数 D を使用して繰り返し for ループを作成します。

  • ls
  • /l
  • /media/user

したがって、3回実行されます。

    directory add -d D

私はそのプログラムが何をdirectoryするようになっているのかわかりません。ただし、同じパラメータを使用してまったく同じ方法で3回実行されます。

  • add
  • -d
  • D
done

for ループが終了します。

これは正確に説明する動作ではありません。常に正確に3回追加されますD

今、改善が必要です。

正確に3回実行したくはありませんが、正確に3回実行したいので、を/media/user使うのが確実な選択です。これで$(ls -l /media/user)、プログラムがパラメータとしてdirectoryどの形式を期待しているのかわかりませんが、そうでない場合

-rw-r--r-- 1 ljm users   27164672 Jun 19 00:30 mikrotik-6.47.10.iso

もしそうなら、おそらくそのオプションを望まないでしょう-l。また、解析された出力はls一般的に悪い考えです。だからあなたが探しているのは

for D in /media/user/* 
do

次に、directoryプログラムIDを指定してください。常にD最後の引数として呼び出されます。価値ではなくD、つまり$D。これはあなたが望むかもしれないことを意味します

directory add -d $D

ただし、ディレクトリ名にスペースが含まれている場合、ディレクトリ名は2つの引数に分割されます。したがって、以下を引用する必要があります。

directory add -d "$D"

これがあなたを正しい道に導くことを願っています。

おすすめ記事