2011-10-19 31 views
0

例如:殼牌:在var中存儲命令供以後使用

並且使用命令時:

$ $CMD 
ls: /tmp/spaced\: No such file or directory 
ls: dir: No such file or directory 

不具有的功能:

CMD="ls /tmp/spaced\\ dir" 
CMD="ls \"/tmp/spaced dir\"" 
CMD="ls \"/tmp/spaced\\ dir\"" 
CMD='ls \"/tmp/spaced dir\"' 

而我需要的參數「/tmp/spaced dir」在變量中... 當然,目錄「/tmp/spaced dir「確實存在。

回答

1

OK,發現使用eval一個解決方案:

$ CMD="ls /tmp/spaced\\ dir/" 
$ eval $CMD 
dir_in_spaced_dir 
$ 
1

你可能會談論ALIAS

集的別名是這樣的:

alias ls="ls /tmp/spaced" 

如果你需要「的/ tmp /間隔」將被存儲在一個變種,只是這樣做:

export MYVAR='/tmp/spaced' 
alias cmd="ls ${MYVAR}" 

如果ALIAS不允許的,只是把這個函數中的

function mydir(){ 
    ls ${MYVAR} 
} 
+0

不是別名,此命令可能只用於當前腳本 –

1

對於bash,數組是要走的路。

dir="/tmp/spaced dir" 
CMD=(ls "$dir") 
echo "cmd has ${#CMD[@]} words" 
"${CMD[@]}" # execute the command 
+0

+1實際適用於任何參數。 – l0b0