理解shell的eval命令

2021-09-05 01:21:51 字數 763 閱讀 6669

看以下兩條命令:

[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...