簡體   English   中英

Bash 從不同的 bash 腳本創建和訪問臨時目錄

[英]Bash create and access a temporary directory from different bash scripts

我在TEMP_DIR=$(mktemp -d)中創建了一個臨時目錄,我想從 b.sh 訪問這個臨時目錄。 我已經嘗試過導出( 我可以將變量從 bash 腳本導出到環境中而不獲取它嗎? )並獲取此目錄的路徑,但它們對我的情況沒有用,因為這兩個腳本通過幾個命令,我不能直接從 a.sh 運行 b.sh。

我怎樣才能做到這一點?

如果您無法將參數傳遞給項目的不同部分(甚至無法通過環境),我只會看到兩個選項:

  1. 如果您的架構不允許您傳遞參數,但您需要該功能,請修改架構
  2. 如果您無法修改架構,請使用全球知名名稱。 /tmp中使用固定名稱而不是隨機名稱,並采取必要的預防措施來防止常見問題,例如同時使用此目錄的多個腳本實例。

我將從頂級腳本(調用a.sh然后b.sh的那個)創建臨時目錄,然后將路徑放在環境變量MY_TEMP_DIRa.shb.sh腳本的參數中。

這更干凈,因為頂層腳本也負責刪除臨時目錄。

如果您無法修改頂級腳本,那么您必須使a.shb.sh以一種或另一種方式進行通信。 一種簡單的方法是讓a.sh腳本創建臨時目錄並將其路徑放入a.shb.sh都知道並可以讀取的文件中。

如果b.sh不是運行 a.sh 的進程的子進程,您可以在a.sh中將目錄名稱寫入文件並從b.sh中的該文件讀取目錄名稱。

但是,如果a.shb.sh在進程樹的某處共享一個公共父進程,您可以考慮確定該父進程內臨時目錄的名稱並使用該名稱設置一個環境變量,然后兩者都使用你的腳本。

為避免此目錄的命名沖突,您可以使用您的 PID 作為名稱的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM