真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

shell中的eval命令-創(chuàng)新互聯(lián)

      在shell的學(xué)習(xí)中,我們會遇到這兩種符號:反引號(` `)和$(),那么它們之間有什么區(qū)別和聯(lián)系呢?

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、公主嶺網(wǎng)站維護(hù)、網(wǎng)站推廣。

      我們都知道在bash中,反引號和$()都是用來做命令替換的,命令替換就是用來重組命令行,先完成引號里面的命令,然后將其結(jié)果替換出來,再重組成新的命令行。也就是在執(zhí)行一條命令時,會現(xiàn)將其中的` `,或者是$()中的語句當(dāng)做命令執(zhí)行一遍,再將結(jié)果加入到原命令中重新執(zhí)行,例如:

shell中的eval命令

      從上面我們可以看到,當(dāng)我們echo反引號里面的ls命令時,和我們直接執(zhí)行l(wèi)s命令是一樣的,也就正應(yīng)里我們前面說的,也就是在執(zhí)行一條命令時,會現(xiàn)將其中的` `,或者是$()中的語句當(dāng)做命令執(zhí)行一遍,再將結(jié)果加入到原命令中重新執(zhí)行。

      雖然在操作上,這兩種都能達(dá)到同樣的效果,但是在平時的使用中,我們盡量使用$(),因為:

             首先,反引號` `與單引號‘ ’在使用上很可能混淆,給我們帶來不必要的麻煩

             其次,在多層次的復(fù)合替換中,反引號` `需要有額外的跳脫處理(反斜杠),而$()比較直觀;

             但是$()的弊端就是并不是所有的unix系統(tǒng)都支持這種方式,但反引號是肯定支持的。

eval命令用法:

       當(dāng)我們在命令行前加上eval時,shell就會在執(zhí)行命令之前掃描它兩次.eval命令將首先會先掃描命令行進(jìn)行所有的置換,然后再執(zhí)行該命令。該命令適用于那些一次掃描無法實現(xiàn)其功能的變量。該命令對變量進(jìn)行兩次掃描。

  1. eval可以用來回顯簡單的變量:

  shell中的eval命令

   這樣和普通的沒有加eval關(guān)鍵字的命令的作用一樣

2.eval也能用來執(zhí)行含有字符串的命令:

        首先我們先來創(chuàng)建一個file文件,在這個文件中輸入一些我們想要輸出的文本,然后我們將cat file賦給變量myfile,整個過程如下:

shell中的eval命令

      從上面我們可以看到,當(dāng)我們把cat file直接賦予myfile變量后,我們直接echo myfile的內(nèi)容將不會輸出我們在file文件里面的文本。然后當(dāng)我們用eval命令后,就會輸出我們想要的內(nèi)容。這時因為eval命令不但可以置換該變量,還能執(zhí)行相應(yīng)的命令。在第一次掃描中進(jìn)行了變量置換,第二次掃描就執(zhí)行了該變量所包含的字符串里面的cat file 命令,所以就輸出了我們想要的內(nèi)容。

3.eval命令還可以顯示我們傳遞給腳本的最后一個參數(shù):

        我們現(xiàn)在有如下一個腳本:

          shell中的eval命令

我們有如下的執(zhí)行過程:

shell中的eval命令

      從上面的執(zhí)行結(jié)果們可以看到,當(dāng)我們執(zhí)行該腳本時,結(jié)果總是我們輸入的最后一個參數(shù),這時怎么回事呢?這正是eval的這種用法,在上面的腳本中,eval命令首先把$$#解析為當(dāng)前shell的參數(shù)個數(shù)(我們這里為4),然后再第二次掃描時才得出最后一個參數(shù)。

4.eval命令也可以創(chuàng)建指向變量的指針:

shell中的eval命令

     在上面的命令中,我們先定義了一個變量val=100;然后又定義了個ptr并把val賦予之。然后我們用eval命令來解析ptr的值,我們可以看到是100.然后我們通過ptr修改了val的值,此時再看val的值,就變成了50了。

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


網(wǎng)站名稱:shell中的eval命令-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://weahome.cn/article/csijgi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部