美文网首页
shell脚本练习-2

shell脚本练习-2

作者: 夕颜00 | 来源:发表于2021-02-24 17:32 被阅读0次

    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
    

    转载来自:https://www.jb51.net/article/51574.htm

    相关文章

      网友评论

          本文标题:shell脚本练习-2

          本文链接:https://www.haomeiwen.com/subject/tfssfltx.html