Shell-Script

在腳本中獲取文件

  • May 3, 2019

我想在 tcsh 腳本中獲取文件。在程式碼中:

#!/bin/tcsh

unsetenv LD_LIBRARY_PATH
source $1    
echo $LD_LIBRARY_PATH > temp_file

**預期結果:**腳本使用 source 命令設置的環境變數將列印到臨時文件中。

**實際結果:**源文件執行良好,但LD_LIBRARY_PATH變數保持為空。

關於如何讓它發揮作用的任何想法?


PS tcsh當然不是我選擇的 shell,但我有一個腳本在工作,它設置了許多tcsh我想在其中工作的環境變數bash。我認為最簡單的方法(除了tcsh每次都重寫 shell)是獲取它,將變數列印到一個文件中,並使用一些 shell 魔術,重新在 bash 中重新獲取所有內容。

為了進一步參考,這確實有效,但不應將 shebang 用於 tcsh 路徑:

#!/bin/tcsh 

而是使用“env”的路徑:

#!/usr/bin/env tcsh

允許在不同路徑中安裝 tcsh 的系統上具有靈活性。例如,如果 ’tcsh’ 安裝在 ‘/usr/bin/tcsh’ 中,那麼前者會失敗,而後者仍然可以工作。

我在 OpenBSD 上嘗試過使用 csh。我想我的例子也適用於 tcsh。

文件 test.csh:

#!/bin/csh
source data.csh
echo $VARIABLE

文件數據.csh

#!/bin/csh
setenv VARIABLE 1234

結果:

$ csh test.csh
1234

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