Linux学习之Shell基础编程

1、shell中的变量、控制、循环基本语法

     什么是shell 呢? shell 就是以文件的形式批量的存储Linux命令的集合,该文件能够被Shell解释执行,这既是Shell脚本程序。

  shell的第一行:指定用哪个程序来编译和执行脚本    #!/bin/bash 或者 #!/bin/sh  两者是一致的! sh  是bash 的一个软连接。

    1、1 : 变量
                                1、变量名必须以字母或者是下划线开头,后面可以跟字母、数字下划线 。
                                2、变量的赋值,变量对于对大小写比较敏感! 定义名称的时候等号两边千万不能有空格  ! $ name=vincent    √     $name = vincent  ×    如果想要赋空值,就给变量赋一个换行符。
                                3、变量名的引用: 使用echo $name   或者是 ${name}   加不加{}都一样
                                4、清除变量 :unset name
                                5、显示当前用户的所有的变量 : set
                                6、变量是有作用域的,分为本地变量和全局变量(环境变量),全局变量分为全局的环境变量和用户的环境变量 , 变量名全部惯例为大写。
                                     ! 比如你在窗口一中创建的变量,在窗口二中是不能使用的。这个变量是本地变量 还有一个全局环境变                                               量! 是存在/etc/profile 这个文件中的变量。 另外在  ~ 这个目录下面的   .bash_profile  ,这个目录中的                                             是用户的环境边变量。

     1、2 : 位置参量:sbin/hadoop-deamon.sh  start namenode   这个start namenode 就是一个位置参量。

             1、位置参数是一组特殊的内置变量,通常被shell脚本用来从命令行接受参数,或被函数用来保存传递给它额参数。

             2、执行 shell脚本时,用户可以通过命令行向脚本传递信息,跟在脚本名后面的用空格隔开的每个字符串都称为位置参数。

             3、在脚本中使用这些参数的时候,需要通过位置参数来引用,例如:$1 表示第一个参数,$2 表示第二个参数! ${10} 就得使用{} 将10包裹进行传递了。如果位置参数中有空格的!需要用引号引起来
                  $0 : 表示当前执行脚本的名称! 三种执行方式获取的不一样1、 .shname.sh     2、 ./shname.sh   3、 sh shnam.sh
                  $1-$9 :第一个到第九个位置参数。
                  $#   : 位置参数的个数
                  $*  :以单字符串显示所有的位置参数
                  $@ :未加双引号时候与$*含义相同,加双引号的时候有区别
                  $$ : 脚本运行的当前进行号

                  $! : 最后一个后台运行额进程的进程号
                  $? :显示前面最后一个命令的退出状态。   0 表示没有错误,其他任何值表示有错误

   1、3 :shell中的数组、date、cal命令详解

             定义数组: arr=(zhangsan lisi wangwu) 
              引用 :echo ${arr[0]}   echo ${arr[*]} :查看所有    echo ${#arr[*]} :查看有多少个值 。 arr[0]=vincent :修改值

            date的详解:date man  查看日期的详解    如何在shell中引用日期 :
                 1、date=$(date +%Y-%M-%d)  :
                         echo ${date}  获取当前的系统时间 以 年-月-日的形式获取
                  2、date2=$(date --date='2 days ago'  +%Y-%M-%d )
                          echo $(date2)  获取当前日期往前推两天的时间
                  3、date3=$(date --date='-1 days'  +%Y-%M-%d  )
                         echo $(date3)  获取当前日期往后推一天的时间

           cal : 获取 日历 :
                 1、cal 获取当前月份的日历
                 2、cal 2018 :获取2018年的所有的日历
                 3、cal 12 2018 : 获取2018年12月份的日历。

    1 、4 : shell中的判断表达式以及if的使用

                判断 : shell中 [] 就是一个判断符号, 就代表这test 判断的意思

                   test -e filname  判断文件是否存在 
                           -e:该文档是否存在
                           -f :该文件是否存在切是否为file
                           -d:该文件是否存在且该文件是否为目录?

                   test  -r filename  :判断文件是否有课读权限  -w   -x 同理。

                  判断还有很多! 

            if 的使用 :

第一种: if [ -判断条件  "需要判断的文件"] ;then
             如果为true  就执行then下面的 句子。
        fi

第二种: if [ 条件判断式 ] ; then
             当条件成立的时候,可以进行指令工作内容;
          else
             点条件判断式不成立的时候,可以进行的指令工作内容;
        fi

第三种:if  [ 条件判断式 一] ; then
             当条件成立的时候,可以进行指令工作内容;
       else [ 条件判断式二 ] ; then  
             条件判断式成立的时候,可以进行的指令工作内容;
       else [ 条件判断式三] ; then  
             条件判断式成立的时候,可以进行的指令工作内容;
       else
             当条件判断式一、二、三都不成立的时候执行的语句;
       fi

               for循环和while循环 :       

#第一种方式
for var in 1 2 3 4 5 6
do 
    echo ${var}
done


#第二种方式

num=10
s=0
for((i=0;i<${num};i=i+1))
do
    s=$((${s}+${i}))
done

echo ${s}
#第一种
while [ 条件判断式 ]
do
    程序段落
done

#第二种
until [ 条件判断式 ]
do
    程序段落
done
#一行一行的去读取文件
cat ${filename} | while read line
do
    ${line}
done

#或者是
cat `ls ./*.txt` | while read line
do
    echo ${line}
done


                                    

猜你喜欢

转载自blog.csdn.net/weixin_41928342/article/details/84973624
今日推荐