
我有一個 bash 腳本,應該執行許多命令。這些命令在終端機中輸入時工作正常,但當我嘗試從腳本內部執行它們時,它們不起作用,所以我認為這是特定於環境的。
在我的腳本中有
exec "$cmd"
它不起作用,而如果我複製 $cmd 的內容並貼上到終端中,它就可以正常工作。
執行腳本時如何保持目前環境?或者你有其他想法嗎?
答案1
arr=(foo bar baz quux)
exec "${arr[@]}"
答案2
set -o allexport
在 bash 腳本的頂部鍵入。這應該會自動導出您定義的所有變數。 (請注意,這被認為是不好的風格;更好的辦法是導出正確的變數)。
答案3
如果所有命令都應從同一目錄運行,您可以使用
cd /d $Location
在腳本的開頭設定要執行的命令的位置。
cd-這是更改目錄指令。 /d——此開關使 cd 同時更改驅動器和目錄。
如果您希望從 D:\scripts 執行命令而不帶 /d,您需要
D:
cd \scripts
但使用上面的命令你可以在一行中完成
cd /d D:\scripts
-再次編輯-
我很抱歉,它清楚地寫著 BASH,但由於某種原因我在 BATCH 上閱讀了它。以後會更加小心。