日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下set和eval的使用小案例精彩解答

發(fā)布時(shí)間:2025/3/20 linux 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下set和eval的使用小案例精彩解答 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

linux下set和eval的使用小案例解答

本博文主要是講解學(xué)生提出的如下一行命令腳本定義的真正內(nèi)涵: runlevel=$(set?--?$(runlevel);?eval?"echo?\$$#"?)
以下是老男孩培訓(xùn)14期VIP群內(nèi)的對(duì)話解答記錄,內(nèi)容已做過濾,有的網(wǎng)友以前反映過,說老男孩發(fā)的記錄時(shí)間對(duì)不上,其實(shí)老男孩只是以對(duì)話問答的形式讓大家掌握技術(shù)而已,內(nèi)容是加工過的屬正常,不要大驚小怪,給大家看的一定是最容易理解的對(duì)話過程,也盡量保持了原來的對(duì)話。
解答對(duì)話: 北京-劉同學(xué)(123437415) 2013/4/10 23:01:07 求問一些服務(wù)的啟動(dòng)腳本runlevel=$(set -- $(runlevel); eval "echo \$$#" )?這個(gè)runlevel是怎么把這個(gè)運(yùn)行級(jí)別的取到的
? 北京老男孩老師(49000448)?10:57:44 你敲一下runlevel看看。
? 北京-劉同學(xué)(123437415)?10:59:39 [root@G307 ~]# runlevel N 3
? 北京老男孩老師(49000448)?11:00:31 后面的3就是運(yùn)行級(jí)別

北京-劉同學(xué)(123437415)?11:00:39 啊,明白了,他是 $#=2 然后 $2=3是這樣吧 老男孩老師點(diǎn)評(píng):對(duì)。

北京-陶同學(xué)<DD@sina.com>?11:05:19 $# 獲取當(dāng)前shell命令行中參數(shù)的總個(gè)數(shù) $n?獲取當(dāng)前執(zhí)行的shell腳本的第n個(gè)參數(shù)值,n=1,...9,當(dāng)n為0時(shí)表示腳本的文件名,如果n大于9,用大括號(hào)括起來${10} 老男孩老師點(diǎn)評(píng):這個(gè)同學(xué)說的是命令行腳本傳參的內(nèi)容,也適合本文。

北京-李燦(123458724)?11:08:22 eval對(duì)echo \$$#的雙重掃描 假如要的參數(shù)不是最后一個(gè) 那么這個(gè)總數(shù) 就不準(zhǔn)確了是吧 老男孩老師點(diǎn)評(píng):對(duì)的。取最后一個(gè)才能這么用。

北京老男孩老師(49000448)?11:09:19 set 和eval的用法比較特殊,后期課程慢慢的給大家***,現(xiàn)在是學(xué)習(xí)的剛剛開始啊。 先給大家一個(gè)例子: [root@oldboy ~]# set -- "I am" handsome oldboy.?#==>傳入三個(gè)參數(shù) [root@oldboy ~]# [root@oldboy ~]# echo $##==>現(xiàn)在有三個(gè)參數(shù) 3 [root@oldboy ~]# for i in $*;do echo $i;done #==>循環(huán)打印這些參數(shù),用$*,無引號(hào) I am handsome oldboy. [root@oldboy ~]# for i in $@;do echo $i;done #==>在沒有雙引號(hào)的情況下,這里的結(jié)果$*和$@是一樣的 I am handsome oldboy. 北京老男孩老師(49000448)?11:10:22 上面是咱們老男孩培訓(xùn)后期課程教案里的一個(gè)例子 北京老男孩老師(49000448)?11:12:59
[root@oldboy ~]# set -- $(runlevel) [root@oldboy ~]# echo $# 2 [root@oldboy ~]# echo $(set $(runlevel); eval "echo $2" ) 3 劉同學(xué)同學(xué)你理解這個(gè)吧。這個(gè)會(huì)了,那個(gè)就差不多了 北京-劉同學(xué)(123437415)?11:13:45 恩,懂了
? 北京老男孩老師(49000448)?11:13:55 set可以像命令行一樣設(shè)置傳參,這個(gè)用法不多見! 了解就得,工作幾乎不需要必須用它 北京-劉同學(xué)(123437415)?11:14:20 恩,好的 北京老男孩老師(49000448)?11:15:42 既然你懂了,我就在多說下,哈哈! runlevel=$(set -- $(runlevel); eval "echo \$$#" ) 1)這里的$#就是參數(shù)個(gè)數(shù)為2,即runlevel的結(jié)果, 所以\$$#就是$2,即runlevel結(jié)果的第二列3 [root@G307 ~]# runlevel N 3 2)eval就是把echo的字符串,當(dāng)做命令解析!解答了這么多 其實(shí)知識(shí)含量已經(jīng)非常多了。 可以寫一篇博文了。 北京-李燦(123458724)?11:16:52 echo $?#輸出括號(hào)內(nèi)的值 (set $(runlevel);?#將runlevel參數(shù)值,傳入shell,N 3 eval "echo $2" )?#eval二次掃描,首先掃描到echo輸出$2,第二次解析$2的值為等級(jí)3 這樣子嗎?
? 北京老男孩老師(49000448)?11:17:15 GOOD,贊啊!李同學(xué)強(qiáng)悍啊,加油,未來是塊學(xué)習(xí)linux的材料,嘿嘿!
? 北京老男孩老師(49000448)??11:33:43
提醒下啊,問完問題?還有點(diǎn)事要做啊
這是老師給老男孩培訓(xùn)的全體同學(xué)們解答問題的唯一默認(rèn)條件。。
總結(jié)好,發(fā)到咱們?nèi)汗蚕砝锘蛘邆鞯絊VN共享里。 再?gòu)?qiáng)調(diào)下啊:同學(xué)們和老男孩老師學(xué)習(xí),最應(yīng)該學(xué)習(xí)的就是這樣的學(xué)習(xí)方法和學(xué)習(xí)習(xí)慣,而不僅僅是技術(shù)本文,同學(xué)們切記。這次我也會(huì)發(fā)博文總結(jié)本次的對(duì)話,算是給你們做個(gè)榜樣吧,下次就是你們了。

總結(jié)

以上是生活随笔為你收集整理的linux下set和eval的使用小案例精彩解答的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。