--- title: bash 跟 batch 共用變數檔案 tags: computer --- # bash 跟 batch 共用變數檔案 因為工作常常是在不同平台之間作業, 所以也會寫一些 script 來方便做事,Linux 就是寫 bash script , 在 Windows 就是寫 batch file。 一些設定或變數,在不同平台的 script 可能會寫成如下範例,有著不同的宣告方式。 build.bash ```bash= #!/bin/bash APP_Name=myprog APP_Ver=1.0.1 echo APP_Name is $APP_Name echo APP_Ver is $APP_Ver ``` build.bat ```bat= @echo off set APP_Name=myprog set APP_Ver=1.0.1 echo APP_Name is %APP_Name% echo APP_Ver is %APP_Ver% ``` --- 後來我參考些資料後,實現一個可以共用一個變數檔案的方法,這樣一來,我就可以只需維護同一份變數檔案,方便許多,也在一些案子裡這樣使用。 底下範例檔案說明: * env.txt 即共用變數的部分, 切出來到這個檔案來定義。 * build.bash 即 bash script 使用共用變數的範例。 * build.bat 即批次黨使用共用變數的範例。 --- env.txt ```bash= #!/bin/bash APP_Name=myprog APP_Ver=1.0.1 ``` --- build.bash ```bash= #!/bin/bash source ./env.txt echo APP_Name is $APP_Name echo APP_Ver is $APP_Ver ``` 在 Linux 裡執行結果 ``` $ ./build.bash APP_Name is myprog APP_Ver is 1.0.1 ``` --- build.bat ```bat= @echo off for /f "delims=" %%x in (env.txt) do (set "%%x") echo APP_Name is %APP_Name% echo APP_Ver is %APP_Ver% ``` 在 Windows 執行結果 ``` >build.bat 環境變數 #!/bin/bash 未定義 APP_Name is myprog APP_Ver is 1.0.1 ``` 雖然執行起來會出現第一行未定義,但那不影響後面運作。