/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"
これがあなたを正しい道に導くことを願っています。
答え2
ls
スクリプトでは使用しないでください。ディレクトリコマンドはありませんが、
mkdir
ディレクトリが作成されます。 「man」ページを読むことができます。
したがって、最初の行for D in /media/user/*