如何在 shell 腳本中使用兩個 find 命令輸出傳遞導出變數

如何在 shell 腳本中使用兩個 find 命令輸出傳遞導出變數

我有一個 find 命令作為腳本的一部分,並將值匯出到變數中,如下所示

export value1="'find /app/new1 -name '*service.sh*'"

經過測試我意識到,在少數主機上,目錄如下所示

/sbclocal/app/new1

我如何檢查並將兩者傳遞為相同的值?

當我找到這個腳本並稍後停止或啟動時執行。

答案1

如果我對問題的理解是正確的,那麼實現理想狀態的方法就很少。

  1. find支援指定多個路徑。所以這樣說也沒什麼大不了的:

    export value1="$(find /app/new1 /sbclocal/app/new1 -name '*service.sh*')"
    

    如果缺少一個目錄,這將產生一條錯誤訊息,但是(取決於您的方式)它通常不會影響您的腳本。

  2. 將兩個命令傳遞給值:

    export value1="$(find /app/new1 -name '*service.sh*' && find /sbclocal/app/new1 -name '*service.sh*')"
    

    此選項提供的答案更接近您的問題(將兩個命令傳遞給同一變數),但看起來並不是更好的解決方案。

  3. 支票方式:

    export value1="$(for dir in /app/new1 /sbclocal/app/new1; do [ -d $dir ] && find $dir -name '*service.sh*'; done)"
    

相關內容