用點設定變數選項

用點設定變數選項

我正在嘗試與一個不受我管理的系統交互,該系統正在執行一些 Unix 命令腳本和命令以輕鬆執行作業。

有一個變數替換不起作用,我想知道是否可以編寫一個命令來避免這種情況。有很多變數需要設置,我希望有機會輸入一個空變數。問題在於系統沒有傳遞空變數並且根本沒有設定該變數。我明白了

${option.VARIABLE}:錯誤替換

我嘗試設置類似的東西但不起作用。

if [ -z ${option.VARIABLE} ];然後 option.VARIABLE="";菲;

任何想法?

答案1

點不是變數名稱中的有效字元。 bash 手冊說(這裡

姓名

僅由字母、數字和底線組成且以字母或底線開頭的單字。名稱用作 shell 變數和函數名稱。也稱為標識符。


但是,我的 ksh93 手冊頁顯示:

定義。

[...] 標識符是以字母或底線開頭的字母、數字或底線的序列。標識符用作變數名稱的組成部分。 vname 是由 . 分隔的一個或多個識別碼組成的序列。並可選地在前面加上 .. Vnames 用作函數和變數名稱。

這部分似乎與您的問題最相關(強調我的問題):

參數擴展。

[...] 變數以 vname 表示。 建立一個 vname 包含 . 的變量,該變數的 vname 由最後一個 . 之前的所有內容組成。必須已經存在。

此功能僅存在於 ksh93 中,bash 中不存在。如果您的腳本使用它,您需要在 ksh93 下執行它。

答案2

我覺得 ”。”你的變數名稱會弄亂你的程式碼。

option.VARIABLE嘗試透過將變數從重新命名為來刪除變數中的點optionVARIABLE

相關內容