1. 写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录。
答案 : 输出用户名,当前日期和时间,以及当前工作目录的命令就是logname,date,who i am和pwd。
现在,创建一个名为userstats.sh文件,将下面的代码添加到它。
ttxie@41 script_5]$ cat userstats.sh
#!/bin/bash
echo "hello $LOGNAME"
echo "Current is `date "+%F %T"`"
echo "User is `who i am`"
echo "Current dir is `pwd`"
[ttxie@41 script_5]$ bash userstats.sh
hello ttxie
Current is 2021-02-24 15:57:08
User is ttxie pts/1 2021-02-20 14:31 (192.168.41.102)
Current dir is /home/ttxie/shell/script_5
2、写一个shell脚本,进行两个数字的相加,如果没有输入参数就输出错误信息和一行使用说明
答案 : 下面是简单的shell脚本以及描述,如果没有命令行参数,它会抛出错误与如何使用脚本的说明。
再创建一个名为twonumbers.sh文件和下面的内容添加到文件里。
[ttxie@41 script_5]$ cat twoNum.sh
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Usage:$0 x y"
echo " Where x and y are two nos for which I will print sum"
exit 1
fi
sum=`expr $1 + $2`
echo "Sum of $1 and $2 is $sum"
exit 0
:正常运行程序并退出程序;
exit 1
:非正常运行导致退出程序;
exit 0
可以告知你的程序的使用者:你的程序是正常结束的。如果 exit 非 0 值,那么你的程序的使用者通常会认为
你的程序产生了一个错误。
在 shell 中调用完你的程序之后,用echo $?
命令就可以看到你的程序的 exit 值。在 shell 脚本中,通常会根据
上一个命令的$?
值来进行一些流程控制。
[ttxie@41 script_5]$ bash twoNum.sh
Usage:twoNum.sh x y
Where x and y are two nos for which I will print sum
[ttxie@41 script_5]$
[ttxie@41 script_5]$ bash twoNum.sh 5 3
Sum of 5 and 3 is 8
[ttxie@41 script_5]$ echo $?
1
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
现在,创建一个名为rev.sh
文件,并添加以下代码。
[ttxie@41 script_5]$ cat rev.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"
[ttxie@41 script_5]$ bash rev.sh
Usage: rev.sh number
I will find reverse of given number
For eg. rev.sh 0123, I will print 3210
[ttxie@41 script_5]$
[ttxie@41 script_5]$ bash rev.sh 253
Reverse number is 352
也可以用rev函数:
[ttxie@41 script_5]$ echo "253" |rev
352
4、 你应该直接用终端,而不是依靠任何shell脚本来进行实数计算。你会怎么做(比如实数7.56+2.453)?
答案 : 我们需要用如下所述的特殊方式使用bc命令。将7.56+2.453作为输入通过管道进入bc中。
[ttxie@41 script_5]$ echo 7.2+5.3|bc
12.5
[ttxie@41 script_5]$ echo 7.56 + 2.453|bc
10.013
网友评论