看以下兩條命令:
[zhangsan@xen /sys]$a="ls";b="\$a";c="$b";"$c"
hey! no command '$a' found, did you mean 'ia'?
[zhangsan@xen /sys]$a="ls";b="\$a";c="$b";eval "$c"
block bus class dev devices firmware fs kernel module power
eval命令的作用是再次掃瞄解釋,可多次疊加,如:
[zhangsan@xen /sys]$a="ls";b="\$a";c="\$b";eval "$c"
hey! no command '$a' found, did you mean 'ia'?
[zhangsan@xen /sys]$a="ls";b="\$a";c="\$b";eval
eval "$c"
block bus class dev devices firmware fs kernel module power
附: 關閉檔案描述符函式,並匯出該函式給子程序使用
close_all_fd()
# 匯出close_all_fd
export -fclose_all_fd
實際應用,可參見:
shell指令碼 eval執行shell命令
和其他語言的eval功能差不多,都是將乙個儲存執行語句的變數作為引數,eval會讓變數所儲存的語句執行。下面是乙個執行表單提交的命令 注意,這裡只是示例,應用中不要這麼使用,很危險 bin bash index.cgi echo content type text html charset utf ...
shell中變數的變數與eval命令
shell 中經常會用到變數的巢狀的情況。比如,單個或多個變數的值作為變數名,再對該變數名取 獲取其內部的變數的情況,這種指令碼寫起來很難搞,還好有eval 命令方便我們處理這種情況。便於理解,先來乙個示例 bin bash a my b site my site my site www.361wa...
eval 讓shell指令碼動態的構建命令
用法 eval command line 原理 eval主要用在對引數的特殊處理上面的,一般的命令列,shell處理引數就只執行一遍,像轉義和變數轉變 但加上eval後就可以對引數多進行一遍處理 乙個eval只能使shell對引數多一次處理,因此有幾個eval就可以多加幾次,即eval eval c...