Linux中的shell编程

shell变量

      1:两类变量:临时变量和永久变量

           临时变量是shell程序内部定义的,适用范围仅限于程序内部,对其他程序不可见。包括:用户自定义变量,位置变量。永久变量是环境变量,其值不随shell脚本的执行结束而消失。

      2:用户自定义变量要以字母或下划线开头,由字母,数字,下划线组成。在使用变量时,要在变量前面加"$"符号。

      3:位置变量和特殊变量

                   shell解释执行用户命令时,将执行命令的第一个部分作为命令名,其他部分作为参数。由出现在命令行上的位置确定的参数称为位置参数。

          例如:

                  ls  -l  file1 file2  file3

                $0这个程序的文件名 ls -l

                $n 这程序的第n个参数值,n=1-9

       4:特殊变量

               $*  这个程序的所有的参数

               $#   这个程序的参数的个数

               $$ 这个程序的PID

               $!  执行上一个后台命令的PID

                $?  执行上一个命令的返回值

       5:shell命令

            read命令:从键盘读入数据,付给变量。

           如:read  NAME

            expr命令:对整数型变量进行算数运算

           如:expr  3 + 5  之间要有空格否则以字符的形式表示出来

                  expr  $var1 / $var2   同上

                  expr  $var1 \* 10  乘法要用到转义字符"\"

            复杂的运算:expr  `expr 5 + 7` + 3   可以用命令替换符

       6:变量测试语句:

          test      测试条件

           1>字符串测试:

                      test  str1=str2   测试字符串是否相等

                      test  str1 != str2 测试字符串是否不相等

                      test   str1           测试字符串str1是否不为空

                      test    -n  str1      测试字符串是否不为空

                      test    -z   str1     测试字符串是否为空

            2>整数测试:

                      test   int1   -eq   int2  测试整数是否相等

                      test   int1   -ge    int2  测试int1是否>=int2

                      test   int1   -gt     int2   测试int1是否> int2

                      test   int1   -le     int2    测试int1是否 <= int2

                      test   int1   -lt     int2    测试int1是否< int2

                      test   int1    -ne   int2   测试int1和int2是否不相等

             3>文件测试:

                      test  -d  file  指定的问件是否为目录

                      test   -f file    指定的文件是否为常规的文件

                      test   -x file   指定的文件是否可执行

                      test   -r  file   指定的文件是否可读

                      test   -w  file   指定的文件是否可写

                      test   -a  file   指定的文件是否存在

                      test   -s  file    指定的文件大小是否非0

变量测试语句一般不单独使用,一般作为if语句的测试条件。

例如:

          if      test   -d   $1  then

          fi

变量测试语句可用[] 进行简化,如

test -d $1  等价于  [ -d $1 ] (注意括号两边的空格)

 

     7:流程控制语句

            多个条件的联合:

          -a   逻辑与,当且仅当两个条件都成立时,结果为真

         -o    逻辑或,两个条件只要有一个条件成立,结果为真。

       例如: elif [ -c $file_name -o -b $file_name ]   

                     then                                                     (注意测试语句内的空格)

      

        一个实际的例子:

                   #/bin/sh

                   if  [ $#  -ne 2 ]; then

                          echo  "Not enough parameters"

                          exit 0    #  0表示程序正常的退出

                   fi

                   if  [ $1 -eq $2 ]; then

                          echo "$1 equals $2"            #注意双引号和单引号的区别

                   elif  [ $1 -lt  $2 ]; then

                           echo  "$1 littler than $2"

                   elif  [ $1 -gt  $2 ]; then

                            echo "$1 greater than $2"

                    fi

        for ....done语句

                 例子:(剔除某一个在线的用户)

                 #!/bin/sh

                #the script to kill logined user

                    username="$1"

                    /bin/ps  aux |  /bin/grep $username | /bin/awk '{ print $2 }'  > /tmp/tmp.pid

                    killid = `cat /tmp/tmp.pid`

                    for PID in $killid

                    do

                            /bin/kill  -9  $PID 2> /dev/null

                    done

          select 和case的用法实例:

                  #!/bin/sh

                     echo "a is 5, b is 3. Please select your method:"

                      a=5

                      b=3

                     select var in "a+b"  "a-b"  "a*b"  "a/b"

                     do

                             break

                     done

                     case $var in 

                               "a+b")  echo 'a+b=' `expr $a "+" $b` ;;

                               "a-b" )  echo 'a-b=' `expr $a "-" $b` ;;

                               "a*b" )  echo 'a*b=' `expr $a "*" $b` ;;

                               "a/b"  )  echo 'a/b='  `expr $a "\" $b` ;;

                                 *  )  echo "input error"

                       esac         

         

               while 循环:

                       #!/bin/sh

                          num=1

                         while [ $num -le 10 ]

                                 do

                                      SUM= `expr $num \* $num`

                                      echo $SUM

                                       num= `expr $num +1 `

                                   done

不通过交互式的方法而是通过标准输入来设置用户的密码: echo "密码" |  passwd  --stdin  用户名

 

基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值