Linux Shell脚本编程一

本文介绍了Shell脚本的基础知识,包括它的定义、执行方式和编写步骤。详细讲解了Shell脚本中的变量,如自定义变量、特殊变量(环境变量、只读变量、位置变量)以及数组的使用。还探讨了功能性语句,如read命令和算术运算,并举例说明了test语句的用法。最后提到了结构性语句在控制程序流程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Shell脚本是利用shell的功能所写的一个程序(shell是一个解释性的语言,不需编译,直接执行)

        

#!/bin/bash

echo "hello world"

$取值

第一种执行方式:bush d6.sh

第二种执行方式:source d6.sh

第三种执行方式:chmod 0777 d6.sh   给最高权限的执行

                                ./d6.sh

二、Shell脚本编写步骤

        1.需求分析

        2.命令测试

        3.脚本编写

        4.测试调优

三、Shell脚本变量

        1.变量可以通过变量名访问。在指令式语言中,变量通常是可变的

        2.变量用来存放系统和用户需要使用的特定参数

        3.变量的命名规则:

        (1)区分大小写;

        (2)不能使用程序内的保留字和内置变量;

        (3)只能使用数字、字母及下划线,且不能以数字开头;

        (4)使用英文尽量使词义通俗易懂。

        4.变量分类

        (1)自定义变量:由用户自己定义、修改和使用

        双引号:允许通过$符号引用其他变量值(弱引用,其中的变量引用会被替换为变量值)

       单引号:进制引用其他变量值,$视为普通字符(强引用,其中的变量引用不会被替换为变量值,而保持源字符串)

        反撇号:命令替换,提取命令执行后的输出结果,``和$(...)作用相同

   

#!/bin/bash 

echo "hello world"

#array数组
a=(1 2 3 4 5)
#默认是一个数组元素的值
echo $a
#取所有数组元素
echo ${a[*]}
echo ${a[@]}

#取数组元素的个数
echo ${#a[*]}
echo ${#a[@]}

#取其中某一个元素
a[2]=9
echo ${a[2]}
#删除数组中的某一个元素
unset a[2]
echo ${a[*]}
#删除数组
unset a

        (2)特殊变量

                环境变量:由系统维护,用于设置工作环境;

                                $USER 表示用户名称

                                $HOME 表示用户的宿主目录

                                $LANG 表示语言和字符集

                                $PWD 表示当前所在工作目录

                                $PATH 表示可执行用户程序的默认路径

                                export可以将变量指定为全局变量

                只读变量:用于变量值不允许被修改的情况;最快方式重启

#!/bin/bash
#只读变量
readonly COUNT=3

                位置变量:通过命令行给脚本程序传递参数;

#!/bin/bash
#位置变量
echo $0
echo $1
echo $2
echo $3

#传递参数的个数
echo $#
#打印所有传递的数据(打印的这些数据是分开的)
echo $@
#打印所有传递的数据(打印的数据看成一个整体)
echo $*
#上一条指令执行的结果
echo $?
#正在执行进程的ID号
echo $$

                预定义变量:bash中内置的一类变量,不能直接修改。

四、Shell程序由零或多条shell语句构成。

        shell语句包括三类:说明性语句、功能性语句、结构性语句。

        1.说明性语句(注释行):以#开始到该行结束,不被解释执行

        2.功能性语句(命令)

        (1)read从标准输入读入一行, 并赋值给后面的变量,其语法为:

                read  var  把读入的数据全部赋给var。

                read  var1  var2  var3  把读入行中的第一个单词(word)赋给var1, 第二个单词赋给var2, ……把其余所有的词赋给最后一个变量。

        如果执行read语句时标准输入无数据, 则程序在此停留等侯, 直到数据的到来或被终止运行。

        (2)算术运算命令expr主要用于进行简单的整数运算,包括加(+)、减(-)、乘(\*)、整除(/)和求模(%)等操作。例如

#!/bin/bash

#-s 输入不回显
#-t 指定输入的时间
#-p 指定输入的提示字符串
#read -s -t 3 -p "please input two num: " val1 val2
read -p "please input two num: " val1 val2
#read val1
echo "val1 = $val1"

#read val2
echo "val2 = $val2"

#算术运算
temp=`expr $val1 + $val2`
echo $temp

temp=`expr $val1 - $val2`
echo $temp

temp=`expr $val1 \* $val2`
echo $temp

temp=`expr $val1 / $val2`
echo $temp

        (3)test语句可测试三种对象:字符串     整数     文件属性

                每种测试对象都有若干测试操作符

                字符串测试(条件成立echo $?条件返回值为0,不成立返回1)

                s1 = s2   测试两个字符串的内容是否完全一样

                s1 != s2  测试两个字符串的内容是否有差异

                -z s1       测试s1 字符串的长度是否为0

                -n s1       测试s1 字符串的长度是否不为0

                整数测试

                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

                文件测试

                -e name    测试一个文件是否存在

                -d name    测试name 是否为一个目录

                -f name     测试name 是否为普通文件

                -L name    测试name 是否为符号链接

                -r name     测试name 文件是否存在且为可读

                -w name   测试name 文件是否存在且为可写

                -x name    测试name 文件是否存在且为可执行

                -s name    测试name 文件是否存在且其长度不为0

                f1 -nt f2    测试文件f1 是否比文件f2 更新

                f1 -ot f2    测试文件f1 是否比文件f2 更旧

#!/bin/bash

#测试字符串
val1="hell"
val2="hello"

test "$val1" != "$val2"
#echo $?

val1="hi"
test -n "$val1"
#echo $?

#整数测试
val1=3
val2=5
#test $val1 -ne $val2
test $val1 -lt $val2
#echo $?

#测试文件
test -f read.sh
echo $?

3.结构性语句主要根据程序的运行状态、输入数据、变量的取值、控制信号以及运行时间等因素来控制程序的运行流程。

        主要包括:

                条件测试语句(两路分支)

                多路分支语句

                循环语句

                循环控制语句等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值