Shell 编程快速入门

shell简介

  • 什么是shell编程?
    • 将终端下编写的命令等保存到文件中,就称为shell编程。
  • shell类型?
    • ash、bash、csh、ksh
    • 查看系统shell解析器:echo $SHELL
    • 当前系统可以shell解析器:/etc/shells文件
  • shell脚本的执行
    • 指定shell解析器执行指定脚本:bash hello.sh,不需要添加可执行权限
    • 将shell脚本作为可执行文件执行,必须添加可执行权限
      • 添加可执行权限:sudo chmod +x world.sh
      • 在脚本开头指定shell解析器:#! /bin/bash,其他位置的#表示注释
      • 执行脚本:
        • 在当前目录:./world.sh
        • 不在当前目录:/home/jerry/shell/world.sh

shell变量

  • 变量定义:name='dahua',’='两边不能有空格
  • 打印变量:echo $name 或 echo ${name}
  • 销毁变量:unset name,之后就不能再使用
  • 声明常量:readonly name='dahua'
  • 使用说明:’='两边不能有空格,只读变量不能修改

变量分类

  • 本地变量:只适用于当前shell的变量
  • 环境变量:适用于整个系统,通常都是纯大写的
    • 查看系统环境变量:env
    • 查看指定环境变量:echo $PATH
    • 若想在任意位置都可执行指定程序,可以将程序所在的路径添加到环境变量PATH。
    • 修改:
      • 单次:export PATH=$PATH:/home/jerry/shell
      • 永久:
        • 系统:/etc/profile
        • 用户:~/.profile、~/.bashrc、~/.bash_profile
        • 把导出的语句添加到文件末尾即可
        • 使文件生效:重启终端 或 source ~/.bashrc
  • 位置变量:
    • $0:执行脚本的名字
    • $1 ~ $9:传递给脚本的参数
  • 特殊变量:
    • $#:传递给脚本的参数个数
    • $*:传递给脚本的所有参数
    • $?:上次命令的执行情况,0表示正确,其他表示错误

字符串类型

  • 单引号:其中的字符都会原样输出,不会被解析

  • 双引号:可以放除了$、`、\、"以外任意字符,其中的变量等会被解析

  • 反引号:将其中的内容作为命令执行,如:

    echo `date`
    
  • ‘’:转义特定的字符,如:$、*、\、?、|、`、^、&

  • 字符串长度:${#name}

  • 字符串提取:${name:2:3},从变量name中下表为2的地方提取3个字符

数组类型

  • 定义:a=(1 2 3)
  • 成员访问:echo ${a[2]}
  • 个数统计:echo ${#a[@]}
  • 所有元素:echo ${a[*]}

seq

  • 说明:生成指定范围的连续整数
  • 示例:seq 10,生成1~10的连续整数,seq 2 10,生成2~10的连续整数

expr

  • 说明:运算一个表达式

  • 示例:

    expr 2 + 3				结果为5
    echo `expr 3 + 5` 		结果会打印8
    expr 3 \* 5				结果为15,*需要转义
    

各种运算

  • test命令:成功为真,失败为假。

    #!/bin/bash
    
    if test 1 -lt 2; then
    	echo 'ok'
    fi
    
    if [ 1 -lt 2 ]; then
    	echo 'okok'
    fi
    
  • 数值比较运算

    • -lt:小于
    • -le:小于等于
    • -gt:大于
    • -ge:大于等于
    • -eq:等于
    • -ne:不等于
  • 字符串测试

    • =:相等
    • !=:不相等
    • -z:字符串的长度是否为0
    • -n:字符串的长度是否不为0
  • 文件判断

    • -f:普通文件
    • -d:目录文件
    • -c:字符设备文件
    • -b:块设备文件
    • -w:是否可写
    • -x:是否可执行
    • -s:文件存在,并且至少有一个字符
  • 逻辑运算

    • -a:逻辑与(and),也可以使用&&来代替
    • -o:逻辑或(or),也可以使用||来代替
    • !:逻辑非
    • 示例:
    #! /bin/bash
    
    if [ 1 -lt 3 -a 2 -lt 3 ]; then
    	echo 'ok'
    fi
    
    if [ 1 -lt 3 ] && [ 2 -lt 3 ]; then
    	echo 'ok'
    fi
    
    if [ ! 1 -gt 3 ]; then
    	echo 'xxx'
    fi
    

分支结构

  • if-elif-else:

    #! /bin/bash
    
    if [ 8 -lt 3 ]; then
    	echo '8 < 3'
    elif [ 8 -lt 9 ]; then
    	echo '8 < 9'
    else
    	echo 'xxx'
    fi
    
  • case:

    #! /bin/bash
    
    read -p 'please input any charactor:' ch
    
    case $ch in
    	[a-z])
    		echo 'alpha'
    	;;
    	[0-9])
    		echo 'numberic'
    	;;
    	*)
    		echo 'others'
    	;;
    esac
    

循环结构

  • for-in 及 for

    #! /bin/bash
    
    a=(1 2 3 4 5)
    # for x in a b c
    # for x in /etc/*
    # for x in `seq 1 10`
    for x in ${a[*]}
    do
    	echo $x
    done
    
    for ((i=0;i<${#a[@]};i++))
    do
    	echo ${a[$i]}
    done
    
  • while

    #! /bin/bash
    
    i=1
    sum=0
    
    while [ $i -le 100 ]
    do
    	#((sum+=$i))
    	#((i++))
    
    	#let sum+=$i
    	#let i++
    
    	sum=$[$sum+$i]
    	i=$[$i+1]
    
    done
    
    echo $sum
    
  • until:条件成立,循环停止

    #! /bin/bash
    
    i=1
    until [ $i -gt 10 ]
    do
    	echo $i
    	((i++))
    done
    
  • break、continue自行学习

函数使用

  • demo(){
      echo 'for func'	
    }
        
    demo
    
    arg()
    {
       echo $1
       echo $2
       echo $*
       echo $#
       return 250
    }
    arg abc def
    # $?表示函数的返回值
    echo $? 
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Linux shell脚本编程是在Linux系统上使用shell进行编程的方式。常用的shell有bash、sh、csh、tcsh等。 入门步骤如下: 1. 创建一个文本文件,文件名以".sh"结尾,表示这是一个shell脚本。 2. 编写脚本内容,脚本内容主要由Linux命令和shell语句组成。 3. 修改文件权限,使脚本文件可执行。 4. 运行脚本,通过在终端中输入“./脚本文件名”来执行脚本。 编写一个简单的脚本示例: ``` #!/bin/bash echo "Hello, World!" ``` 第一行表示使用bash shell来执行这个脚本 第二行是一个命令,输出一个字符串 执行方式: ``` chmod +x script_name.sh ./script_name.sh ``` 如果想了解更多关于Linux shell脚本编程的知识,可以参考Linux shell教程或者使用"man bash"命令来查看bash命令手册。 ### 回答2: Shell是一个命令解释器,是Linux/Unix系统中的一种重要工具,它提供了一个命令行界面,允许用户与操作系统进行交互。Shell脚本编程是将一系列Shell命令进行组合,以解决自动化任务、文件操作、编译工具和其他日常任务的编程技术。 Shell脚本是一个文本文件,文件名通常以“.sh”作为后缀名。脚本文件以#! /bin/bash或#! /bin/sh等开头,然后是脚本命令。在Shell脚本编程中,需要掌握以下几个方面: 1.基本语法:Shell脚本语法和其他编程语言一样,包括变量定义、数学计算、逻辑控制、循环操作等。 2.变量:Shell脚本中使用变量存储数据,可以通过赋值运算符“=”定义变量,也可以通过参数传递给脚本。需要注意的是,Shell变量不需要显式声明数据类型,也不能用“$”前缀定义变量。 3.重定向:Shell脚本中通过重定向符“>”、“>>”、“<”和“<<”来控制标准输入/输出和错误输出,非常方便输出数据和错误信息以及读取文件数据。 4.管道:Shell脚本中使用“|”符号来建立管道,将一个命令的输出作为另一个命令的输入,实现数据流的处理和转换功能。 5.循环和分支:在Shell脚本编程中,循环和分支语句的使用非常重要,可以实现复杂的逻辑功能,例如for、while、until循环和if、case语句。 在实际应用中,Shell脚本可以用于各种系统自动化操作,例如服务器备份、日志分析、批量文件操作、软件编译、自动安装等。此外,Shell脚本还可以与其他编程语言(例如Python、Perl)结合使用,形成更强大的脚本解决方案。 总的来说,Shell脚本编程Linux系统中非常重要的一项技能,掌握Shell脚本基础语法和常用命令是必须的,可以帮助您更高效地完成日常的操作和管理任务。掌握Shell脚本编程后,您可以更深入地理解Linux系统工作原理,提高自身的技术水平和工作效率。 ### 回答3: Linux shell脚本编程是一种编写通用命令行脚本的方法。在 Linux 系统中,shell是一个命令行解释器,可以执行用户输入的命令。通过编写shell脚本,我们可以轻松地将多个Linux命令整合在一个脚本中,自动化完成一系列工作。 在学习 Linux shell脚本编程之前,需要掌握基本的Linux命令和shell语法,比如条件判断、循环等基本语句。另外,了解Linux文件系统、文件读写等操作也是必备的知识。 从最简单的开始,编写一个输出Hello World的脚本: ```bash #!/bin/bash # 指定使用哪种shell echo "Hello World!" # 输出Hello World ``` 在这个例子中,我们使用了 `#!/bin/bash` 来声明我们使用的是Bash shell,并使用 `echo` 命令输出一个字符串。 接下来,我们可以学习基本的控制语句,例如条件语句和循环语句。条件语句可以用来根据变量值来执行不同的命令: ```bash #!/bin/bash var="Hello World!" if [ $var == "Hello World!" ]; then echo "Equal!" else echo "Not equal." fi ``` 在这个例子中,我们使用 `if` 和 `else` 语句来判断变量的值是否等于“Hello World!”,然后根据结果执行相应的命令。 另一个常见的控制语句是循环语句,可以用于重复执行一组命令: ```bash #!/bin/bash for i in 1 2 3 4 5 do echo "Number: $i" done ``` 在这个例子中,我们使用 `for` 循环来输出数字1-5。 除了基本的控制结构,shell脚本还支持参数处理和函数定义等高级语法。使用 `getopts` 命令可以方便地解析脚本参数: ```bash #!/bin/bash USAGE="Usage: $0 -f <filename> -n <num_lines>" while getopts ":f:n:" opt; do case $opt in f) file=$OPTARG ;; n) num_lines=$OPTARG ;; \?) echo "Invalid option: -$OPTARG" >&2 echo "$USAGE" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument." >&2 echo "$USAGE" >&2 exit 1 ;; esac done echo "Printing $num_lines lines from $file:" head -n $num_lines $file ``` 在这个例子中,我们使用 `getopts` 命令和 `case` 语句来解析脚本参数,然后根据参数执行相应的命令。 最后,我们还可以定义函数,用于重复使用一组命令: ```bash #!/bin/bash function print_number { echo "Number: $1" } for i in 1 2 3 4 5 do print_number $i done ``` 在这个例子中,我们定义了一个名为 `print_number` 的函数,函数以一个参数为输入并输出字符串。 通过学习以上例子,我们可以了解到Linux shell脚本编程的基础语法和基本知识。在实践中,我们可以根据实际需求编写多种脚本来完成不同的任务,使Linux系统自动化执行一系列操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

atopx

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值