• shell


    一. 开头

    1.0开头必须为下面这个固定格式

    #!/bin/bash
    

    二.执行

    2.0 shell文件的格式和权限设置

    chmod +x filename.sh   后缀需要为.sh,同时需要将文件改为可执行文件 
    

    执行shell 脚本

    第一种   ./filename.sh
    第二种   bash dilename.sh
    第三种   export PATH=/home/linux/shell:$PATH  这/hone/linux/shell这个目录添加到环境变量之后,可以在任何目录下执行shell所写的程序
    	  ./filename.sh
    	  
    

    三.shell的变量(Bourne Shell)

    3.0用户自定义变量

    3.0.0用户自定义变量的命名规则

    (1)首个字符必须为字母(a~z, A~Z),或者下划线 _
    (2)中间不能有空格,可以有下划线 _
    (3)不能使用其他标点符号

    3.0.1 示例

    变量的赋值例子:VAR="hello world !"          注意等号两边都没有空格
    变量的调用例子:echo "VAR: = $VAR "
    通过变量赋值给变量赋值例子:VAR=$VAR
    变量的调用例子:echo "var=$VARAB"并不会打印”hello world !“,会打印var=;需要加变量分隔符也就是大括号{}.
    使用unset可以删除变量的赋值:unset VAR
    

    3.1位置参数即命令行参数

    位置参数可以设置为$N得到,N是一个数字,N=0,$0表示传递给程序的名字,$1表示程序的第一个参数,以此类推

    3.2预定义变量

    也就是shell本身规定的变量
    $@:包含命令参数的个数
    $?:包含当前一个命令的退出状态,正常退出返回0,反之为非0值
    $*:包含所有命令行参数“$1,$2...."
    $$:包括正在执行进程的ID号
    

    3.3环境变量

    3.3.0 常见的环境变量

    HOME:文件中列出的用户主目录
    IFS:内部字段分隔符,默认为空格,tab及换行符
    

    3.3.1 设置环境变量的方法

    echo:显示指定环境变量
    export:设置新的环境变量
    env:显示所有环境变量
    set:显示所有本地定义的Shell变量
    unset:清除环境变量
    

    四.程序和语句

    4.0 常见语句

    (1)read:从键盘获取变量的值

    read  变量
    read 变量1 变量2 
    read 的变量可以为一个或多个,但是键盘输入的时候格式要严格一致,即变量中有几个空格在输入的时候同样要加几个空格
    

    (2)算数运算命令 expr $var1 运算符 $var2

    var1=4
    var2=8
    add=`expr $var1 + $var2`
    sub=`expr $var1 - $var2`
    mul=`expr $var1 \* $var2`
    div=`expr $var1 / $var2`
    mod=`expr $var1 % $var2`
    注意      :    乘法是\*    
    注意   运算符两边有空格,
    注意 有``符号
    

    (3)test命令
    test可以测试的三种对象:字符串 整数 文件属性

    1)字符串测试
    s1 = s2  :测试两个字符串内容是否完全一样
    s1 != s2 :测试两个字符串的内容是否有差异
    -z s1 :测试字符串的长度是否为0
    -n s1 :测试两个字符串的长度是否不为0
    例子:
    	read var1
    	read var2
    if	[ "var1" = "var2" ]
    	then 
    		echo "1"
    	else 
    		echo "0"
    fi		
    	满足条件返回1,不满足条件返回0
    2)整数测试
    	a -eq b :测试 a和b是否相等
    	a -ne b :测试a和b 是否不相等
    	a -gt b :测试a是否大于b
    	a -ge b : 测试a是否大于等于b
    	a -lt b :测试a是否小于b
    	a -le b :测试a是否小于等于b
    	例子
    	read var1
    	read var2
    		if test $var2 -eq $var2
    		then echo ”1“
    		else
    		echo "0"
    		fi
    	比较var1和var2是否相等,相等返回1,不相等等返回0 
    3) 文件测试
    -d name 测试name 是否为一个目录
    -f name 测试文件是否为普通文件
    -L name 测试文件是否为一个符号链接
    -r name 测试文件是否存在且可读
    -w name 测试文化是否存在且可写
    -x name 测试文件是否存在且可执行
    -s name 测试文件是否存在且不为空
    f1 -nt f2 测试文件f1是否比f2更新
    f1 -ot f2 测试文件f1是否比文件f2更旧
    例子
    	read name
    	if [ -d $name ]
    	 then 
    	 echo "this is derictory"
    	fi
    	
    	如果我们没有设置export PATH=/home/linux/Shell:$PATH;那么name我们需要输入绝对路径
    

    (4)结构性语句

    1)条件测试语句
    	if 表达式
    		then 执行的命令
    	else
    		执行的命令
    	fi
    2)多路分支语句
    case 字符串变量 in
    模式1)
    	执行的命令;;
    模式2)
    	执行的命令;;
    模式n)
    	执行的命令;;
    esac
    例子:
    read name
    case $name in
    file1)
    	echo "this is file1";;
    esac
    当我们输入file1的时候会打印 this is file1
    3)循环语句-for
    for 变量名 in 单词表
    do 
    	命令表
    done
    例子:
    for I in $@
    do
    	if [ $I != $0 ]
    	then echo "$I"
    	fi
    done	
    执行 ./test.sh 0,1,2
    打印结果 0
    		1
    		2
    相当于把单词表一次赋给变量名
    4)循环语句-while
    while 表达式
    do
    	命令表
    done
    例子
    	if test $# -eq 1
    	 then
    	 	i=1
    	 	while rest $i -lt 5
    	 		do >$i$1
    	 			i=`expr $i + 1`
    	 		done
    	 else
    	 	echo "$#"
    	fi 
    执行 ./test.sh 。txt
    	会生成1.txt,2.txt,3.txt,4.txt
    (3)循环控制语句 continuebreak
    使用方法和C语言一样
    	
    

    五 shell函数

    方式一
    function _name()
    {
    命令表
    }
    方式二
    function function_name()
    {
    命令表
    }
    注意:shell函数只在当前shell中起作用,如果在shell中执行了其他shell那么当前shell中的函数不生效的
    下面是一个函数的使用例子
    例子

    #!/bin/bash
    read var1
    read var2
    function add()
    {
    	ADD=`expr $1 + $2`
    	return $ADD
    }
    var=$?         $?的作用是返回上一条语句的执行结果
    echo $var
    
    
    执行 ./test.sh 
    1
    2
    执行结果为 3
    

    六 shell脚本的调用

    例子
    test_1.sh

    #!/bin/bash
    echo "this is shell_1"
    ./test_2.sh
    #test_1.sh
    

    test_2.sh

    #!/bin/bash
    echo "this is shell_2"
    #test_2.sh
    

    当我们执行./test_1.sh
    打印结果为:
    this shell_1
    this is shell _2

    注意:我们可以对条件语句加双括号(()),那么双括号中的条件语句就可以使用C语言格式;

  • 相关阅读:
    Java现在还好找工作吗?
    【读书笔记】【More Effective C++】技术(Techniques,Idioms,Patterns)
    吃透Spring源码分析专题
    【JS】JavaScript入门笔记第五弹之预解析、对象~
    【ELK】日志分析系统概述及部署
    Linux 安装 JDK
    C++ —— 二叉搜索树
    字符串拆分以及合并--Python
    LiveData源码赏析三 —— 常见问题
    [解题报告] CSDN竞赛第六期
  • 原文地址:https://blog.csdn.net/hpx12345678/article/details/126964078