Linux Shell脚本的实用面试问题和答案

有了压倒性的反应,我们在面试系列文章,第一个在任何Linux操作网站上的形式,喜欢,反馈在评论以及个人电子邮件地址使我们从一篇文章到下一个文章。

这里是链接到已经发表在youcl.com,我们已经介绍很多主题即文章,FTP,MySQL和Apache的,脚本,Linux命令等。

实际采访壳脚本问题

继续到上面的系列,我们将有另外5个精彩的Linux面试问题和他们的答案。 您的(The youcl.com读者和经常访问者)支持总是需要使它成功。

1.编写shell脚本以获取当前日期,时间,用户名和当前工作目录。
答: 命令日志名,日期,我是谁和pwd将输出的用户名,当前日期和时间,以及当前工作目录。 只是在脚本中实现这些命令,并使它有点互动。

现在创建一个名为“userstats.sh”文件和下面的代码添加到它。

#!/bin/bash 
echo "Hello, $LOGNAME" 
echo "Current date is `date`" 
echo "User is `who i am`" 
echo "Current directory `pwd`"

放置执行权限并运行脚本,如下所示。

# chmod 755 userstats.sh 
# ./userstats.sh
示例输出
Hello, avi 
Current date is Sat Jun  7 13:05:29 IST 2014 
User is avi      pts/0        2014-06-07 11:59 (:0) 
Current directory /home/avi/Desktop
2.编写一个Shell脚本,如果作为命令行参数提供,则添加两个数字,如果未输入这两个数字,则会输出一条错误消息以及一行如何使用描述。
答: 这里是说明,如果作为命令行参数提供的,如果没有它抛出错误关于如何使用脚本单行其将两个号一起简单的shell脚本。

再创建一个名为“two-numbers.sh”文件和添加以下内容吧。

#!/bin/bash 
# The Shebang
if [ $# -ne 2 ] 
# If two Inputs are not received from Standard Input
then 
# then execute the below statements
echo "Usage - $0   x    y" 
# print on standard output, how-to use the script (Usage - ./1.sh   x    y )
echo "        Where x and y are two nos for which I will print sum" 
# print on standard output, “Where x and y are two nos for which I will print sum ”
exit 1 
# Leave shell in Error Stage and before the task was successfully carried out.
fi 
# End of the if Statement.
echo "Sum of $1 and $2 is `expr $1 + $2`"
# If the above condition was false and user Entered two numbers as a command Line Argument,   
it will show the sum of the entered numbers.

对文件设置执行程序权限并运行脚本,如下所示。

# chmod 755 two-numbers.sh

条件1:运行脚本,而无需输入两个数字作为命令行参数,你会得到下面的输出。

示例输出
# ./two-numbers.sh
Usage - ./two-numbers.sh   x    y 
Where x and y are two nos for which I will print sum

条件2:当数字作为命令行参数输入,你会得到的结果,如图所示。

$ ./two-numbers.sh 4 5 
Sum of 4 and 5 is 9

因此,上述shell脚本满足问题中建议的条件。

3.您需要使用Shell脚本以相反的顺序打印给定的Number说10572,以便仅使用命令行参数提供输入。 如果输入数据没有作为命令行参数提供,它应该抛出和错误,并建议如何使用脚本。 编写脚本,但在之前告​​诉我需要在这里实现的算法。

算法

  1. 1.让输入数= n
  2. 2.设置rev = 0,sd = 0(反向和单数字设置为0)
  3. 3. n%10,将找到并给出单个最左边的数字
  4. 反转数被产生为rev * 10 + sd
  5. 5.将输入数字(n)减1。
  6. 6.如果n> 0,则转到第3步,否则转到第7步
  7. 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

条件1:当输入不作为命令行参数提供,你会得到下面的输出。

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

条件2:当输入被作为命令行参数提供。

$ ./numbers.sh 10572 
Reverse number is 27501

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

你应该直接从终端计算一个实数计算,而不是任何shell脚本。 你会做什么(说实数是7.56和2.453)?
答: 我们需要一种特殊的方式来使用BC命令,如下所述。 回波7.56 + 2.453的输出应该流水线到bc。

例如,运行以下命令,如图所示计算使用bc命令实时的数字。

$ echo 7.56 + 2.453 | bc
10.013
你应该找到pi的值到100个小数点,什么是最简单的方法来完成的结果。
找圆周率的值最简单的方法,正确的高达100位小数,我们只需要发出以下命令。
# pi 100 
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

明显! 我们必须安装包“ 圆周率 ”。 只是做一个恰当yum来获得所需的包安装“圆周率 ”到你正在使用的分布。

目前为止就这样了。 我很快就会在这里再一次有趣的文章。 直到然后保持调整和连接到youcl.com。 不要忘记在下面的评论部分向我们提供宝贵的反馈。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏