封面

常用shell脚本.

这篇文章主要介绍了5个实用的shell脚本面试题和答案,给出的脚本堪称编码规范,麻雀虽小,异常处理,友好提示,一应俱全,值得学习,需要的朋友可以参考下

1. 个人信息

写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录。
答案 : 输出用户名,当前日期和时间,以及当前工作目录的命令就是
$LOGNAME,‘date’,‘who i am’ 和 ’pwd‘。
question1
样例输出
注意:带$的环境变量在赋值的时候不需要反引号

question_answer
复制代码

2. 计算

写一个shell脚本,进行两个数字的相加,如果没有输入参数就输出错误信息和一行使用说明

$#  参数个数
-ne 不等于 !=
数值比较用字数 字符串比较用符号
-ne 不等于 !=
-lt 小于 <
-gt 大于 >
-le 小于等于 <=
-ge 大于等于 >=
-eq 等于 ==

特殊变量,不用加反引号
比如 echo $0,意思是输出当前文件名
sum

给他添加可执行权限,并且执行。
复制代码代码如下:

chmod 755 two-numbers.sh
chmod +x tiaojian.sh

情形一: 未输入两个数字作为命令行参数运行脚本,你将得到下面的输出。
样例输出
count

因此,上述shell脚本满足了问题的要求。

3.反序

你需要打印一个给定的数字的反序,如输入10572,输出27501,如果没有输入数据,应该抛出错误和使用脚本说明。在此之前,告诉我你需要在这里使用的算法。

算法

1.输入的数字为n
2.赋值 rev=0, sd=0 (反向和单个数字设置为0)
3.n % 10, 将得到最左边的数字
4.反向数字可以用这个方法生成 rev * 10 + sd
5.对输入数字进行右位移操作(除以10)
6.如果n > 0, 进入第三步,否则进行第七步
7.输出rev
现在,创建一个名为numbers.sh文件,并添加以下代码。
复制代码代码如下:

#!/bin/bash 
if [ $# -ne 1 ]
then
echo "Usage: $0 number"
echo " I will find reverse of given number"
echo " For eg. $0 0123, I will print 3210"
exit 1
fi

n=$1
rev=0
sd=0

while [ $n -gt 0 ]
do
sd=`expr $n % 10`
rev=`expr $rev \* 10 + $sd`
n=`expr $n / 10`
done
echo "Reverse number is $rev"

授予对文件的执行权限,并运行如下所示的脚本。
复制代码代码如下:

chmod 755 numbers.h

情形一: 当输入不包含命令行参数,你将得到下面的输出。
样例输出
复制代码代码如下:

./numbers.sh

Usage: ./numbers.sh  number 
I will find reverse of given number
For eg. ./2.sh 123, I will print 321

情形二: 正常输入
复制代码代码如下:

$ ./numbers.sh 10572

Reverse number is 27501

上面的脚本非常完美,输出正是我们需要的。

4. 使用终端

你应该直接用终端,而不是依靠任何shell脚本来进行实数计算。你会怎么做(比如实数7.56+2.453)?
答案 : 我们需要用如下所述的特殊方式使用bc命令。将7.56+2.453作为输入通过管道进入bc中。
复制代码代码如下:

$ echo 7.56 + 2.453 | bc

10.013

5. 圆周率

需要给出圆周率的值,精度为小数点后100位,什么是最简单的方法。

答案 : 找圆周率的值最简单的方法,我们只是需要发出以下命令。
复制代码代码如下:

time echo “scale=5000; 4*a(1)” | bc -l -q

大概需要30S左右

3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
28810975665933446128475648233786783165271201909145648566923460348610\
45432664821339360726024914127372458700660631558817488152092096282925\
40917153643678925903600113305305488204665213841469519415116094330572\
70365759591953092186117381932611793105118548074462379962749567351885\
75272489122793818301194912983367336244065664308602139494639522473719\
07021798609437027705392171762931767523846748184676694051320005681271\
45263560827785771342757789609173637178721468440901224953430146549585\
37105079227968925892354201995611212902196086403441815981362977477130\
99605187072113499999983729780499510597317328160963185950244594553469\
08302642522308253344685035261931188171010003137838752886587533208381\
42061717766914730359825349042875546873115956286388235378759375195778\
18577805321712268066130019278766111959092164201989380952572010654858\
63278865936153381827968230301952035301852968995773622599413891249721\
77528347913151557485724245415069595082953311686172785588907509838175\
46374649393192550604009277016711390098488240128583616035637076601047\
10181942955596198946767837449448255379774726847104047534646208046684\
25906949129331367702898915210475216205696602405803815019351125338243\
00355876402474964732639141992726042699227967823547816360093417216412\
19924586315030286182974555706749838505494588586926995690927210797509\
30295532116534498720275596023648066549911988183479775356636980742654\
25278625518184175746728909777727938000816470600161452491921732172147\
72350141441973568548161361157352552133475741849468438523323907394143\
33454776241686251898356948556209921922218427255025425688767179049460\
16534668049886272327917860857843838279679766814541009538837863609506\
80064225125205117392984896084128488626945604241965285022210661186306\
74427862203919494504712371378696095636437191728746776465757396241389\
08658326459958133904780275900994657640789512694683983525957098258226\
20522489407726719478268482601476990902640136394437455305068203496252\
45174939965143142980919065925093722169646151570985838741059788595977\
29754989301617539284681382686838689427741559918559252459539594310499\
72524680845987273644695848653836736222626099124608051243884390451244\
13654976278079771569143599770012961608944169486855584840635342207222\
58284886481584560285060168427394522674676788952521385225499546667278\
23986456596116354886230577456498035593634568174324112515076069479451\
09659609402522887971089314566913686722874894056010150330861792868092\
08747609178249385890097149096759852613655497818931297848216829989487\
22658804857564014270477555132379641451523746234364542858444795265867\
82105114135473573952311342716610213596953623144295248493718711014576\
54035902799344037420073105785390621983874478084784896833214457138687\
51943506430218453191048481005370614680674919278191197939952061419663\
42875444064374512371819217999839101591956181467514269123974894090718\
64942319615679452080951465502252316038819301420937621378559566389377\
87083039069792077346722182562599661501421503068038447734549202605414\
66592520149744285073251866600213243408819071048633173464965145390579\
62685610055081066587969981635747363840525714591028970641401109712062\
80439039759515677157700420337869936007230558763176359421873125147120\
53292819182618612586732157919841484882916447060957527069572209175671\
16722910981690915280173506712748583222871835209353965725121083579151\
36988209144421006751033467110314126711136990865851639831501970165151\
16851714376576183515565088490998985998238734552833163550764791853589\
32261854896321329330898570642046752590709154814165498594616371802709\
81994309924488957571282890592323326097299712084433573265489382391193\
25974636673058360414281388303203824903758985243744170291327656180937\
73444030707469211201913020330380197621101100449293215160842444859637\
66983895228684783123552658213144957685726243344189303968642624341077\
32269780280731891544110104468232527162010526522721116603966655730925\
47110557853763466820653109896526918620564769312570586356620185581007\
29360659876486117910453348850346113657686753249441668039626579787718\
55608455296541266540853061434443185867697514566140680070023787765913\
44017127494704205622305389945613140711270004078547332699390814546646\
45880797270826683063432858785698305235808933065757406795457163775254\
20211495576158140025012622859413021647155097925923099079654737612551\
76567513575178296664547791745011299614890304639947132962107340437518\
95735961458901938971311179042978285647503203198691514028708085990480\
10941214722131794764777262241425485454033215718530614228813758504306\
33217518297986622371721591607716692547487389866549494501146540628433\
66393790039769265672146385306736096571209180763832716641627488880078\
69256029022847210403172118608204190004229661711963779213375751149595\
01566049631862947265473642523081770367515906735023507283540567040386\
74351362222477158915049530984448933309634087807693259939780541934144\
73774418426312986080998886874132604720



real 0m32.275s
user 0m31.721s
sys 0m0.035s
文章目录
  1. 1. 1. 个人信息
  2. 2. 2. 计算
  3. 3. 3.反序
  4. 4. 4. 使用终端
  5. 5. 5. 圆周率


twitter分享


Fork me on GitHub