[英]Inline variable in shell script
根據我的要求之一,我想在腳本開始處創建命令,並希望稍后填充這些變量。 例如:
# Global
Mylistdir="ls -la $MYDAIR"
#now after some code I want to create this variable
MYDAIR="/data/dir/"
#Now like to run taht command on /data/dir
echo "$Mylistdir"
我該怎么做?
我嘗試了
Mylistdir="ls -la `$MYDAIR`"`
但是沒有用
代碼應存儲在函數中,而不是變量中。 請參閱BashFAQ#50 ,以獲取基本原理的完整描述,以及由於忽略此規則而導致的錯誤。
Mylistdir() { ls -la "$MYDAIR"; }
MYDAIR=/data/dir
Mylistdir
如果絕對必須將代碼存儲在變量中,請使用eval
:
Mylistdir='ls -la "$MYDAIR"'
MYDAIR=/data/dir
eval "$Mylistdir"
...但是請注意BashFAQ#48中的警告。
問題中提出的原始代碼編寫如下:
Mylistdir="ls -la `$MYDAIR`"`
...現在,由於以下幾個原因,它被打破了:
$MYDAIR
周圍,導致該變量在賦值時的值被字符串拆分,glob擴展,然后作為命令運行,並替換了該命令的輸出(假定為空字符串)到位。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.