shell脚本中的if语句 Linux基础-shell脚本编程
点击上方“3D视觉工坊”辅助卡盟,选择“星标”
干货第一时间送达
作者丨土豆居士
来源丨一口Linux
shell 编程
一、变量
1. shell脚本基础知识
编译型语言:如 c语言 解释型语言:shell 脚本
shell脚本的本质:shell命令的有序集合。
2.shell 编程的基本过程
基本过程分为三步:
建立shell文件:包含任意多行操作系统命令或shell命令的文本文件。——xx.sh
赋予shell文件执行权限,==用chmod命令修改权限==。
执行shell文件,直接在命令行上调用shell程序
示例:
建立shell文件 prog1.sh
data
赋予shell文件执行权限 (初始文本文件无执行权限)
chmod 740 prog1.sh
#或者
chmod u+x prog1.sh
执行shell文件
prog1.sh
#结果为
prog1.sh :not found
原因是:shell在标准搜索路径中找不到prog1.sh 4.正确的执行shell文件
./prog1.sh
#结果为
2009年 12月 16日 星期二 14:52:57 CST
3. shell变量
shell允许用户建立变量存储数据shell脚本中的if语句,但不支持数据类型(整型,字符,浮点型),将任何赋给变量的值都解释为一串字符Variable = value
在这里插入图片描述
==注意几点:==
变量没有类型
=号两边不能加空格
变量必须是大写
赋值的时候要用``框起来
Bourne shell有如下四种变量:
在shell编程中通常使用全大写变量:COUNT=1
变量的调用,在变量前加$:echo $HOME
Linux shell / bash 从右向左赋值:Y=y、X=$Y、echo $X 、y
使用unset命令删除变量的赋值:Z=hello、echo $Z、hello、unset Z、echo$Z
位置变量及命令行参数:
$0 与键入的命令行一样,包含脚本文件名
$1,$2....$9 分别包含第一个到第九个命令行参数。
$# 包含命令行参数的个数
$@ 包含所有命令行参数:$1,$2,...$9
$?包含前一个命令的退出状态
$* 包含所有命令行参数:$1,$2,....$9
$$ 包含正在执行进程的ID号
必须在两位数边写上 { } ,才能正常值一一样。
HOME:/etc/passwd文件中列出的用户目录
IFS: Internal Field Separator , 默认为空格,tab及换行符
PATH:shell搜索路径
PS1,PS2:默认提示符($)及换行提示符(>)
TERM:终端类型,常用的有vt100,ansi,vt200,xterm等。
二、shell 功能语句
shell 程序由零或多条shell语句构成。shell语句包括三类:说明性语句,功能性语句和结构性语句。
**说明性语句 ** 以 # 号开始到该行结束shell脚本中的if语句,不被解释执行功能性语句 任意的shell命令,用户程序或其他shell程序结构性语句 条件测试语句,多路分支语句,循环语句,循环控制语句等。
#!/bin/sh
#
# 本程序说明
#
command_1
command_2 #command_2的语句说明
....
常用功能性语句(命令)
==read== 从标准输入读入一行,并赋值给后面的变量,其语法为:
read var
把读入的数据全部赋给var
read var1 var2 var3
把读入行中的第一个单词(word)赋给var1 ,第二个单词赋给var2,.....把其余所有的词赋给最后一个变量。如果执行read语句时标准输入无数据,则程序在此停留等候,直到数据的到来或被终止运行。