shell脚本学习心得

时间:2022-05-12
本文章向大家介绍shell脚本学习心得,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

近来主要捣鼓ubuntu,大多数项目中都用到了sh脚本作为启动脚本等,以前只是大概明白如何使用,今天需要自己修改并运行脚本就碰到了很多问题,所以决定静下心来学习一下shell脚本,学习了几个小时,现将一些要点总结如下,以供以后翻看或者供入门人员参考。

  • 第一行

这里指的是脚本第一行,一般脚本第一行都是

#!/usr/bin/env bash

这句话的意思是告诉操作系统用哪个命令来解析脚本,一般不用改变

  • 脚本(函数)参数
运行xx.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)

注:如果以上字符出现在函数里就是函数的输入

  • 控制语句
    • if

“if” 表达式如果条件为真则执行then后面的部分:

if ….; then

….

elif ….; then

….

Else

….

fi

大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等…

通常用” [ ] “来表示条件测试。注意这里的空格很重要。要确保方括号的空格。

[ -f "somefile" ] :判断是否是一个文件

[ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限

[ -n "$var" ] :判断$var变量是否有值

[ "$a" = "$b" ] :判断$a和$b是否相等

[ -d "$f" ] 判断f这个变量的值是否是个文件夹

  • for循环
for TIF in $(ls $LAYERS)
do
  INPUT=file:$($LAYERS/$TIF)
    echo $INPUT
done

ls $LAYERS表示列出文件夹下所有文件,所以这是个集合,for循环遍历集合里所有文件,TIF为循环变量

  • 操作符
    • &&

&&意思是如果左边成立执行右边相当于 与

如:dir=$(cd "$dir" && /bin/pwd);

这句话的意思是如果cd dir变量的值没有错误即dir变量所代表的文件夹路径正确,则执行/bin/pwd,即输出全路径 

[ -f "/etc/shadow" ] && echo “This computer uses shadow passwors”  [  ]里面表示一种判断

  • 变量定义
LAYERNAME="SRTM"

无需申明但是=前后不能有空格,使用的时候$LAYERNAME 或者 ${LAYERNAME}

  • 函数
    •  定义函数
realpath ()
{
    f=$@;
    echo "$f"
    if [ -d "$f" ]; then
        base="";
        dir="$f";
    else
        base="/$(basename "$f")";
        dir=$(dirname "$f");
    fi;
    dir=$(cd "$dir" && /bin/pwd);
    echo "$dir$base"
}

函数中的echo表示返回值,如果有多个echo最终输出会拼接起来。函数中的$@等表示函数的参数

    • 使用函数

只需使用 realpath $LAYERS即可,$LAYERS为变量,realpath后面可以跟任意数量的参数以空格隔开,这些参数可以被realpath中的$@全部接受。其实echo就是个函数 以上就是我所学到的shell脚本编写语法,不足之处还请大家补充。