Linux下shell脚本语言编程学习

Linux下shell编程学习

1.题外话

  • 自从第一次写完博客(关于蓝桥杯)之后,又一个星期过去了,本来计划是一周最起码写一篇博客来记下自己在一周之内的进步(学习),从而也方便自己以后回顾学习,但是最终自己还是被各种事情拖延,自己整体有时候就是不想学习,不想去弄这个,觉得排版、打字、找材料特别麻烦费时间,宁愿坐着也不愿意去弄,到了不能再拖得时候,就起身去弄这个了,有时候发现并不是整个事情特别麻烦,而是缺少去尝试的勇气,自己想象中觉得麻烦,就没有去弄,结果自己亲自去做的时候,发现也不是那么麻烦,反而做的时候很有感觉,觉得自己在进步,又讲了很多废话,总之,生活中还是要勇于尝试,这样自己才会一直进步
  • 对了,分享一个自己看到的一天的计划,包括学习和放松,觉得挺好;
    在这里插入图片描述

2.shell编程学习

  • echo
  • 类似于C语言中的printf一样,是输出打印的东西。
  • 如果要输出变量的值,当然肯定也是可以的,对于于printf就可以知道。
shell zgq@123:~$ echo "you are a lovely girl!" you are a lovely girl! ##直接在终端就输出.
    zgq@123:~$ echo &date "+%B%d%A"  ##date是变量,然后以月日星期的格式输出
    四月08星期一                      ##终端输出
  • 当然如果你想直接输出日期,也是可以的,以它默认的格式,唯一注意的就是输出变量的时候需要加 “&”这个符号
    • 除此之后,也可以不加 "&"这个符号,直接用反引号直接括起来,也可以直接输出。
    zgq@123:~$ echo `date`
    2019年 04月 08日 星期一 22:40:19 CST
    ```
    * 这都是在终端直接输出指令,当然也可以建立shell指令文件,然后设置该文件权限,然后运行即可。
    ```shell
        #!/bin/sh
        echo "Mr.$USER,Today is:"
        echo `date "+%B%d%A"`
        echo "wish you a lucky day!"

## 然后设置文件权限,用到chmod指令,设置该文件 可读可写可操作,然后运行该shell文件,即可得到运行结果。



    zgq@123:~~/bin$ chmod 700 FirstShell 
    zgq@123:~/bin$ ./FirstShell   

    Mr.zgq,Today is:
    四月08星期一
    wish you a lucky day!
  * 关于chmod指令,可以在这里说一下,用法为  chmod  [abc]   文件或目录
  a,b,c,分别代表user,group,other的权限,然后r=4,w=2,x=1,代表读,写,可执行的权限,0就是没有该权限。
  例如  chmod  666 FirstShell      设置该bash文件user,group,other的权限都为可读可写,但是不能操作。
  • if
    判断语句,主要是判断的方式不同,-r 表示为真,-d表示目录为真等。
shell #! /bin/bash echo "Please enter the directory name of file name" read dd if [ -r $dd ] then ls $dd else echo "input error" fi
shell zgq@123:~/bin$ chmod 700 shell212 zgq@123:~/bin$ ./shell212 Please enter the directory name of file name ZGQ 

##输入文件夹名称,并且可读 Add.c Add.o hello.h Makefile print.h test test.o ##列出文件夹下的名称 Add.h hello.c hello.o print.c print.o test.c

for与C语言的中for使用类似,下面的函数为计算1-1/2+1/3-1/4+1/5-………-/+ 1/n,n由用户输入

shell #! /bin/bash 
read n 
total=0.0000 an=0.0000 
val=0 begin=$(date +%s) #记录开始时间 
for((num=1;num<=$n;num++)); 
do i=$num ##循环变量 
if [ $i != 0 ] 
then 
an=`echo "scale=4;1.0000/$i" | bc` ##bc用来表示计算小数,scale表示计算保留的小数位数, val=`expr $i % 2` ##判断是否为偶数,分析上面题目可知,可知偶数为-,奇数为+ 
if [ $val == 0 ] #若为偶数,则-,否则为+ 
then total=`echo "scale=4;$total-$an" | bc` 
else total=`echo "scale=4;$total+$an" | bc` 
fi 
fi 
done 
end=$(date +%s) 
cost=$(($end - $begin)) #输出计算时间 echo $total #计算处结果 echo "花费的时间是$cost s"
shell zgq@123:~/bin$ ./shell218 500 .6909 花费的时间是4 s