eval併發 shell shell eval用法

2021-10-17 01:14:54 字數 2017 閱讀 2390

eval可讀取一連串的引數,然後再依引數本身的特性來執行。eval是shell內建命令,可用shell檢視其用法。引數不限數目,彼此之間用分號隔開。

eval [引數]

eval命令將會首先掃瞄命令列進行所有的置換,然後再執行該命令。該命令適用於那些一次掃瞄無法實現其功能的變數。該命令對變數進行兩次掃瞄。這些需要進行兩次掃瞄的變數有時被稱為複雜變數。不過這些變數本身並不複雜。eval命令也可以用於回顯簡單變數,不一定是複雜變數。

1.  eval命令也可以用於回顯簡單變數,不一定是複雜變數

例如:[neau@mail

~]$ name=valuebank

[neau@mail ~]$ eval echo $name

valuebank

[neau@mail ~]$ echo $name

valuebank

2 . 執行含有字串的命令

首先我們首先建立乙個名為test的小檔案,在這個小檔案中含有一些文字。接著,將cat test賦給變數myfile,現在我們e c

h o該變數,看看是否能夠執行上述命令。

[neau@mail ~]$ vi test

[neau@mail ~]$ cat test

hello world!!!

i am a chinese boy!

將cat testf賦給變數myfile

[neau@mail ~]$ myfile="cat test"

如果我們e c h o該變數,我們將無法列出t e

s t 檔案中的內容。

[neau@mail ~]$ echo $myfile

cat test

讓我們來試一下e v a l命令,記住e v a l命令將會對該變數進行兩次掃瞄。

[neau@mail ~]$ eval $myfile

hello world!!!

i am a chinese boy!

從上面的結果可以看出,使用e v a l命令不但可以置換該變數,還能夠執行相應的命令。第

一次掃瞄進行了變數置換,第二次掃瞄執行了該字串中所包含的命令cat

test。

3. 命令還可以用來顯示出傳遞給指令碼的最後乙個引數

[neau@mail ~]$ cat test1

#!/bin/bash

echo "total of the arguments passed $#"

echo "the process id is $$"

echo "last argument os "$(eval echo

[neau@mail ~]$ ./test1 value bank test last

total of the arguments passed 4

the process id is 21545

last argument os last

在上面的指令碼中, e v a l命令首先把$ $ #解析為當前s h

e l l的引數個數,然後在第二次掃瞄時

得出最後乙個引數。

4. 給每個值乙個變數名

可以給乙個值乙個變數名。下面我對此做些解釋,假定有乙個名為test2的檔案:

[neau@mail ~]$ cat test2

cctv 5

changel sports

like yes

你希望該檔案中的第一列成為變數名,第二列成為該變數的值,這樣就可以:

[neau@mail ~]$ cat test2

commany tq

langue english

like yes

[neau@mail ~]$ cat test3

#!/bin/bash

while read name value

doeval "$=$"

done

echo "$commany $langue $like"

[neau@mail ~]$ ./test3

tq english yes

參考:   菜鳥教程

eval併發 shell SHELL併發程式設計

shell的並行程式設計 通過啟用多個並行的後台子程序,實現任務的並行處理。併發程式設計的模式 簡單模式 批處理模式 輪詢模式 佇列模式 簡單模式 將多個任務放在後台,以子程序的方式進行執行。可以看成是簡單模式的併發程式設計。bin bash function log 2 dosleep 0.1 j...

Eval 資料繫結

eval內部必須是雙引號,因為它是普通的c 方法。eval可以使用第二個引數格式化,因此例如你就可以寫 barcode欄位儲存的是條形碼號,如果條形號碼為空,則顯示 待審核 否則顯示條形碼 將格式化日期的方法繫結到資料控制項中 protected string gettime object time...

Eval 資料繫結

eval內部必須是雙引號,因為它是普通的c 方法。eval可以使用第二個引數格式化,因此例如你就可以寫 barcode欄位儲存的是條形碼號,如果條形號碼為空,則顯示 待審核 否則顯示條形碼 將格式化日期的方法繫結到資料控制項中 protected string gettime object time...