shell之eval

來源:互聯網
上載者:User

標籤:

本文將會講解一些linux中命令的使用與技巧希望對新手給予協助
一 e v a l命令將會首先掃描命令列進行所有的置換,然後再執行該命令。該命令適用於那些一次掃描無法實現其功能的變數。該命令對變數進行兩次掃描。這些需要進行兩次掃描的變數有時被稱為複雜變數。不過這些變數本身並不複雜。e v a l命令也可以用於回顯簡單變數,不一定是複雜變數。
1 eval命令也可以用於回顯簡單變數,不一定是複雜變數
例如:
[[email protected] ~]$ NAME=VALUEBANK
[[email protected] ~]$ eval echo $NAME
VALUEBANK
[[email protected] ~]$ echo $NAME
VALUEBANK
2 執行含有字串的命令
首先我們首先建立一個名為test的小檔案,在這個小檔案中含有一些文本。接著,將cat test賦給變數myfile,現在我們e c h o該變數,看看是否能夠執行上述命令。
[[email protected] ~]$ vi test
[[email protected] ~]$ cat test
Hello World!!!
I am a chinese Boy!
將cat testf賦給變數myfile
[[email protected] ~]$ myfile="cat test"
如果我們e c h o該變數,我們將無法列出t e s t 檔案中的內容。
[[email protected] ~]$ echo $myfile
cat test
讓我們來試一下e v a l命令,記住e v a l命令將會對該變數進行兩次掃瞄。
[[email protected] ~]$ eval $myfile
Hello World!!!
I am a chinese Boy!
從上面的結果可以看出,使用e v a l命令不但可以置換該變數,還能夠執行相應的命令。第
一次掃描進行了變數置換,第二次掃描執行了該字串中所包含的命令cat test。
3.命令還可以用來顯示出傳遞給指令碼的最後一個參數
[[email protected] ~]$ cat test1
#!/bin/bash
echo "Total of the arguments passed $#"
echo "The process Id is $$"
echo "Last argument os "$(eval echo \$$#)""
[[email protected] ~]$ ./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的檔案:
你希望該檔案中的第一列成為變數名,第二列成為該變數的值,這樣就可以:
[[email protected] ~]$ cat test2
COMMANY TQ
LANGUE ENGLISH
LIKE YES
[[email protected] ~]$ cat test3
#!/bin/bash
while read NAME VALUE
do
eval "${NAME}=${VALUE}"
done <test2
echo "$COMMANY $LANGUE $LIKE"
[[email protected] ~]$ ./test3
TQ ENGLISH YES

 

#cat eta 1b 2c 3#cat eiwhile read name valuedoeval "${name}=${value}"done < etecho "$a $b $c"#. ei1 2 3

 

shell之eval

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.