博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下set和eval的使用小案例精彩解答
阅读量:6984 次
发布时间:2019-06-27

本文共 2190 字,大约阅读时间需要 7 分钟。

linuxseteval的使用小案例解答

本博文主要是讲解学生提出的如下一行命令脚本定义的真正内涵:
runlevel=$(set -- $(runlevel); eval "echo \$$#" )
以下是
老男孩培训14期VIP群内的对话解答记录,内容已做过滤,有的网友以前反映过,说老男孩发的记录时间对不上,其实老男孩只是以对话问答的形式让大家掌握技术而已,内容是加工过的属正常,不要大惊小怪,给大家看的一定是最容易理解的对话过程,也尽量保持了原来的对话。
解答对话:
北京-刘同学(123437415) 2013/4/10 23:01:07
求问一些服务的启动脚本runlevel=$(set -- $(runlevel); eval "echo \$$#" ) 这个runlevel是怎么把这个运行级别的取到的
 
北京老男孩老师(49000448) 10:57:44
你敲一下runlevel看看。
 
北京-刘同学(123437415) 10:59:39
[root@G307 ~]# runlevel
N 3
 
北京老男孩老师(49000448) 11:00:31
后面的3就是运行级别
北京-刘同学(123437415) 11:00:39
啊,明白了,他是 $#=2 然后 $2=3是这样吧
老男孩老师点评:对。
北京-陶同学<DD@sina.com> 11:05:19
$# 获取当前shell命令行中参数的总个数
$n 获取当前执行的shell脚本的第n个参数值,n=1,...9,当n为0时表示脚本的文件名,如果n大于9,用大括号括起来${10}
老男孩老师点评:这个同学说的是命令行脚本传参的内容,也适合本文。
北京-李灿(123458724) 11:08:22
eval对echo \$$#的双重扫描
假如要的参数不是最后一个 那么这个总数 就不准确了是吧
老男孩老师点评:对的。取最后一个才能这么用。
北京老男孩老师(49000448) 11:09:19
set 和eval的用法比较特殊,后期课程慢慢的给大家***,现在是学习的刚刚开始啊。
先给大家一个例子:
[root@oldboy ~]# set -- "I am" handsome oldboy. #==>传入三个参数
[root@oldboy ~]#
[root@oldboy ~]# echo $#     #==>现在有三个参数
3
[root@oldboy ~]# for i in $*;do echo $i;done #==>循环打印这些参数,用 $*,无引号
I
am
handsome
oldboy.
[root@oldboy ~]# for i in $@;do echo $i;done #==>在没有双引号的情况下,这里的结果 $*和$@是一样的
I
am
handsome
oldboy.
 
北京老男孩老师(49000448) 11:10:22
上面是咱们老男孩培训后期课程教案里的一个例子
 
北京老男孩老师(49000448) 11:12:59
[root@oldboy ~]# set -- $(runlevel)
[root@oldboy ~]# echo $#
2
[root@oldboy ~]# echo $(set $(runlevel); eval "echo $2" )
3
刘同学同学你理解这个吧。这个会了,那个就差不多了
 
北京-刘同学(123437415) 11:13:45
恩,懂了
 
北京老男孩老师(49000448) 11:13:55
set可以像命令行一样设置传参,这个用法不多见!
了解就得,工作几乎不需要必须用它
 
北京-刘同学(123437415) 11:14:20
恩,好的
 
北京老男孩老师(49000448) 11:15:42
既然你懂了,我就在多说下,哈哈!
runlevel=$(set -- $(runlevel); eval "echo \$$#" )
1)这里的$#就是参数个数为2,即runlevel的结果, 所以\$$#就是$2,即runlevel结果的第二列3
[root@G307 ~]# runlevel
N 3
2)eval就是把echo的字符串,当做命令解析!解答了这么多 其实知识含量已经非常多了。
可以写一篇博文了。
 
北京-李灿(123458724) 11:16:52
echo $ #输出括号内的值
(set $(runlevel); #将runlevel参数值,传入shell,N 3
 eval "echo $2" ) #eval二次扫描,首先扫描到echo输出$2,第二次解析$2的值为等级3
这样子吗?
 
北京老男孩老师(49000448) 11:17:15
GOOD,赞啊!李同学强悍啊,加油,未来是块学习linux的材料,嘿嘿!
 
北京老男孩老师(49000448)  11:33:43
提醒下啊,问完问题 还有点事要做啊
这是老师给老男孩培训的全体同学们解答问题的唯一默认条件。。
总结好,发到咱们群共享里或者传到SVN共享里。
再强调下啊:同学们和老男孩老师学习,最应该学习的就是这样的学习方法和学习习惯,而不仅仅是技术本文,同学们切记。这次我也会发博文总结本次的对话,算是给你们做个榜样吧,下次就是你们了。

转载地址:http://cjvpl.baihongyu.com/

你可能感兴趣的文章
机器学习算法在自动驾驶领域的应用大盘点!
查看>>
《深入理解Android:Telephony原理剖析与最佳实践》一1.1 智能手机的系统结构
查看>>
卡斯特罗的离去对古巴科技产业的未来有何影响?
查看>>
维护网络安全要攻防兼备
查看>>
美国第一大移动运营商的5G战略:已进入预商用测试
查看>>
“物联网+云平台”的实验室管理方案,瞄准的是生物医药和化工行业
查看>>
OA系统选型分析之致远OA与华天动力OA
查看>>
联想确认再次裁员 称调整主要分布在海外
查看>>
大鱼吃光小鱼,绝不可能!盘点2016存储行业发生的大事件
查看>>
人中急救穴 也可通过辨别疾病
查看>>
2020年全球云服务规模将达3900亿美元
查看>>
Facebook、Netflix 等多家科技巨头谈“设计”
查看>>
雅虎核心业务售与Verizon:互联网先驱的时代终结
查看>>
市场规模占全国4成,广东物联网市场发展强劲
查看>>
ICS—CERT官网公示匡恩网络新发现四工控漏洞
查看>>
英国电价与光伏容量占比关系分析
查看>>
浅谈对5G核心网演进方向的几点展望
查看>>
明智地选择数据中心的五个注意事项
查看>>
开启物联网的真正潜力需要在更大程度上克服数据挑战
查看>>
张小龙公布微信小程序进展 可直接从桌面进入
查看>>