Linux入门学习笔记(五)--Shell脚本编写

Shell脚本的HelloWorld:
    cd /自己的路径下
    vi helloworld.sh 进入之后,默认是命令状态,按i进入编辑模式
    内容:
        #! /bin/bash
        echo "Hello World!"
    按ESC,输入:wq回车
    chmod +x helloworld.sh
    ./helloworld.sh
    在命令窗口输出了:Hello World!

接下来是Shell编程的一些笔记【可忽略,想系统学习请到推荐的网址!!!】,强烈推荐参考学习网址:http://www.runoob.com/linux/linux-shell.html

shell的知识点小记:
    描述的有点儿不容易懂,看了好久才勉强明白 # ## % %%。
    #、## 表示从左边开始删除。一个 # 表示从左边删除到第一个指定的字符;两个 # 表示从左边删除到最后一个指定的字符。
    %、%% 表示从右边开始删除。一个 % 表示从右边删除到第一个指定的字符;两个 % 表示从左边删除到最后一个指定的字符。
    删除包括了指定的字符本身。

shell数组操作小记:
    看数组的时候,觉得遍历数组用的比较多,所以自己试着写了写遍历,同时试了一下在SHELL脚本中的变量自增几个写法,在就新手学习的时候注意一下 [ 和 $ 之间要有空格,没有空格运行会报错,新手可能不太注意这一点,我开始就没注意到~~~~
    示例如下:
        #!/bin/bash
        my_arry=(a b "c","d" abc)
        echo "-------FOR循环遍历输出数组--------"
        for i in ${my_arry[@]};
        do
          echo $i
        done

        echo "-------::::WHILE循环输出 使用 let i++ 自增:::::---------"
        j=0
        while [ $j -lt ${#my_arry[@]} ]
        do
          echo ${my_arry[$j]}
          let j++
        done

        echo "--------:::WHILE循环输出 使用 let  "n++ "自增: 多了双引号,其实不用也可以:::---------"
        n=0
        while [ $n -lt ${#my_arry[@]} ]
        do
          echo ${my_arry[$n]}
          let "n++"
        done

        echo "---------::::WHILE循环输出 使用 let m+=1 自增,这种写法其他编程中也常用::::----------"
        m=0
        while [ $m -lt ${#my_arry[@]} ]
        do
          echo ${my_arry[$m]}
          let m+=1
        done

        echo "-------::WHILE循环输出 使用 a=$[$a+1] 自增,个人觉得这种写法比较麻烦::::----------"
        a=0
        while [ $a -lt ${#my_arry[@]} ]
        do
         echo ${my_arry[$a]}
         a=$[$a+1]
        done
        
shell运算符注意事项:
    ①.使用 [[ ... ]] 条件判断结构,而不是 [ ... ],能够防止脚本中的许多逻辑错误。比如,&&、||、< 和 > 操作符能够正常存在于 [[ ]] 条件判断结构中,但是如果出现在 [ ] 结构中的话,会报错。
    ②.字符串比较是否为 null 这里:
        #!/bin/bash
        a=""
        if [ -n $a ]
        then
           echo "-n $a : 字符串长度不为 0"
        else
           echo "-n $a : 字符串长度为 0"
        fi

        输出结果为:

        -n  : 字符串长度不为 0

        从结果上看 -n $a 返回 true,这并正确,正确的做法是 $a 这里应该加上双引号,否则 -n $a 的结果永远是 true:

        #!/bin/bash
        a=""
        if [ -n "$a" ]
        then
           echo "-n $a : 字符串长度不为 0"
        else
           echo "-n $a : 字符串长度为 0"
        fi

        输出结果为:
        -n  : 字符串长度为 0
    ③.推荐用 $() 代替 ``:
        val=`expr 10 + 20`
        val=$(expr 10 + 20)
        
shell printf命令:
    printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
    printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
    解释: %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。%-4.2f 指格式化为小数,其中.2指保留2位小数。
    
    ①.如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替,printf "%s and %d \n" ,输出: and 0
    ②.格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
    
shell test命令:
    -eq 等于为真        -ne 不等于为真        -gt 大于为真        
    -ge 大于等于为真    -lt 小于为真        -le 小于等于为真
    例:
        num1=100
        num2=100
        if test $[num1] -eq $[num2]
        then
            echo '两个数相等!'
        else
            echo '两个数不相等!'
        fi

shell 传参示例:
    #! /bin/bash
    read -p "请输入变量a的值:" a
    read -p "请输入变量b的值:" b
    result=$[a+b]
    echo '相加结果为:'$result
    示例二:
    #! /bin/bash
    echo "Shell 传递参数!"
    echo "执行的文件名为:$0"
    echo "传入的第一个参数为$1"
    echo "传入的第二个参数为$2"
    echo "传入的第三个参数为$3"
    read -p "按任意键退出..."

shell 文件测试:☆
    参数     说明
    -e 文件名     如果文件存在则为真
    -r 文件名     如果文件存在且可读则为真
    -w 文件名     如果文件存在且可写则为真
    -x 文件名     如果文件存在且可执行则为真
    -s 文件名     如果文件存在且至少有一个字符则为真
    -d 文件名     如果文件存在且为目录则为真
    -f 文件名     如果文件存在且为普通文件则为真
    -c 文件名     如果文件存在且为字符型特殊文件则为真
    -b 文件名     如果文件存在且为块特殊文件则为真
    实例演示:
        cd /bin
        if test -e ./bash
        then
            echo '文件已存在!'
        else
            echo '文件不存在!'
        fi
    另外,Shell还提供了与( -a )、或( -o )、非( ! )三个逻辑操作符用于将测试条件连接起来,其优先级为:"!"最高,"-a"次之,"-o"最低。例如:
        cd /bin
        if test -e ./notFile -o -e ./bash
        then
            echo '至少有一个文件存在!'
        else
            echo '两个文件都不存在'
        fi
        
linux shell 文件包含
    Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。
    Shell 文件包含的语法格式如下:
    . filename   # 注意点号(.)和文件名中间有一空格
    或
    source filename
    示例:
    test1.sh
        #! /bin/bash
        url=www.baidu.com
    test2.sh
        #! /bin/bash
        . ./test1.sh
        echo "百度网址:${url}"
    ./test2.sh 输出: 百度网址:www.baidu.com

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值