首页 > 编程知识 正文

Shell语句,shell语言命令

时间:2023-05-06 10:42:02 阅读:216141 作者:1565

shell拥有强大的程序设计能力。且很容易学习。

 

我们关注shell的 :

   1. 变量:字符串,数字,环境和参数

                   在使用时,不需要事先声明。(默认情况下变量偶读被当做字符串来存储,即使他们被赋值为数值)   。

                    对大小写敏感(貌似编程语言里面没有不敏感的),

                    变量前面加上“$”符号  使用echo打印变量(字符串里面有空格,则必须用引号括起来,且等号两遍不能有空格)

                    使用read读入一个数据。

                                                   

                                                                              #!/wxddb/sh

                                                                              myvar="Hi there"

                                                                               echo $myvar
                                                                               echo "$myvar"
                                                                               echo '$myvar'
                                                                               echo "$myvar"
                                                                                echo $myvar

                                                                                echo Enter some text
                                                                                read myvar

       
                                                                                echo '$myvar' now equals $myvar
                                                                                exit 0
                     环境和参数有点类似于转义字符,额,效果上哈。   环境变量:$HOME    主目录              $PATH以冒号分隔的用来搜索命令的目录列表          $IFS 输入域分隔符、 $0 表示脚本的名字    $#表示输入参数个数   $$脚本的进程号          参数变量(脚本程序即使没有传递任何参与,环境变量$#依然存在,只不过为0罢了)$1、$2表示第几个参数       $*在一个变量中列出所有参数,并用IFS中的第一个字符分隔开      $@作为$*的一种变体,不适用IFS环境变量,当IFS为空时,参数的值不会结合在一起

 

   2.条件:shell中的布尔值

                       使用test 或 [  命令      (此处的  [   表示判断,是一个指令,所以必须在他和被检查的条件之间留出空格。)

                        test 命令可以使用的条件类型有三类:包括字符串比较,算数比较和与文件有管的条件测试。(test命令真心大虎啊,一条指令直接了三种类型,而且还是搞定的如此彻底,真心犀利,膜拜一下)具体如下:

                           字符串比较           string1 = string2       两字符串相等这结果为真               string1 != string2       两字符串不同则结果为真           (尤其要注意此处的等于号两边必须都有一个空格,否则将会被认为是赋值,恩,和刚刚的变量赋值正好对应了)  

                                                          -n string        字符串部位空则结果为真            -z  string         字符串为空(一个空串)则结果为真 

                                                          作为一种良好的编程习惯,我们最好在对字符串作比较时,对字符串加上“”,这样可以防止因为该字符串为空串导致的语法错误。

                            数值比较              expression1 -eq expression2    两个表达式相等          expression1 -ne expression2     两表达式不相等

                                                          expression1 -gt expression2      表达式1大于(greater than(拜服了,这翻译))表达式2       

                                                          expression1 -ge expression2    表达式1大于等于表达式2

                                                          expression1 -lt expression2       表达式1小于表达式2           expression1 -le expression2      表达式1小于等于表达式2

                           文件条件测试(重点来了!!!)

                                                          -d file       若文件为目录则结果为真(这个memory)

                                                          -e file        若文件存在则为真。注意历史上该选项不可移植,通常用  -f

                                                          -f file         若文件时一个普通文件则结果为真

                                                          -g file        如果文件的suid位被设置则结果为真          -u file 若文件的suid位被设置则结果为真       //弄了两个?hpdxrk的伤感啊

                                                          -r file         如果文件可读则结果为真       -s file 若文件长度不为零则结果为真     -w file 若文件可写则结果为真 -x file  若文件可执行,则结果为真

   3.程序控制:if、elif、for、while、until、case

                            if后面加上then ,如果不换行就要加上“;”,换行的话就不加        if 条件后面加上then 然后才是执行语句,别忘了then哦

                            使用自加一的操作方法  foo=$(($foo+1));           (或者使用foo=$((foo+1)),但是要注意的是,括号是不能少的了,恩,如此来看,为了防止记错了,还是用前者吧)

                            until的使用环境:我们希望循环一直执行下去,知道某些事情发生。

                            在使用case命令中,要注意每个模式行之后都以双分号“;;”结尾。       通常在最后用一个单独的“*”来表示匹配任何可能的字符,以确保如果没有字符串得到匹                                            配,case也可以执行默认的动作。      使用case时,通常把最精确的匹配放在最开始,把最一般化的匹配放在最后面。

   4.命令列表。

                          AND 列表结构,指and连接的所有逐条执行成功的情况下,才会去执行下一条指令,所有指令均执行成功,则该and结构为真

                          OR 列表结构,指or连接的所有指令顺续执行直到有一条命令成功为止(注意,只要有一条命令执行成功,该or判断结束,后续未判断的指令不再继续判断)。若                                     全部都执行不成功,则该or结构为假

   5.函数           

                        函数调用时,只使用函数名即可(后面不要加上“()”),函数可以直接使用全局变量,使用local 关键字定义的变量为局部变量,如果与某一全局变量相同,则在                                     函数局部范围内,该局部变量将会覆盖全局变量(注意,是在函数范围内哦)

   6.shell内置命令

                      trap命令用于指定在接受到信号后将要采取的行动。(哇咔咔,so good,可以考虑在接受到信号之后将线程由睡眠切换成ready状态)

   7.获取命令的执行结果

   8.here文档。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。