Scripting

添加目錄的簡單腳本

  • June 19, 2021

我試圖創建一個監視 /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

謝謝我顯然是新的!

這是非常基本的 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 次 litterally D

現在進行改進。

您不想精確執行 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

下一步 id 你的directory程序。它總是D作為最後一個參數呼叫。不是 的值D,那就是$D。這意味著您可能想要

directory add -d $D

但是,如果目錄名中有空格,這會將目錄名分成兩個參數。所以需要引用:

directory add -d "$D"

希望這能讓你在正軌上做得更好。

引用自:https://unix.stackexchange.com/questions/654940