Linux Shell编程入门 |
您所在的位置:网站首页 › 脚本编程教程 › Linux Shell编程入门 |
文章目录
Shell概述**Linux** **提供的** **Shell** **解析器有****Centos** **默认的解析器是** **bash**
Shell 脚本入门第一个shell脚本脚本的常用执行方式
变量系统预定义变量常用系统变量
自定义变量基本变量变量定义规则特殊变量
运算符
条件判断常用判断条件实际操作
流程控制if判断case 语句**for** **循环**while 循环read 读入
shell 实验练习练习echo给变量赋值练习通过修改PS1变量来更改提示符练习find命令,全盘查找passwd文件,然后用相应的命令确认每一个passwd文件的文件类型。练习管道的使用,完成以下要求:编写一个shell小程序
Shell概述
脚本格式 脚本以#!/bin/bash 开头(指定解析器) 第一个shell脚本创建一个 Shell 脚本,输出 helloworld #!/bin/bash echo "helloworld" 脚本的常用执行方式采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限) sh ./helloworld.sh bash ./helloworld.sh采用输入脚本的绝对路径或相对路径执行脚本(需要添加可执行权限) chmod +x helloworld.sh ./helloworld.sh注意:第一种执行方法,本质是 bash 解析器帮你执行脚本,所以脚本本身不需要执行 权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。 在脚本的路径前加上“.”或者 source 使用在脚本路径前加“.”或者 source 的方式,可以使脚本内容在当前shell 里执行,而无需打开子 shell!这也是为什么我们每次要修改完/etc/profile 文件以后,需 要 source 一下的原因。 开子 shell 与不开子 shell 的区别就在于,环境变量的继承关系,如在子 shell 中设置的 当前变量,父 shell 是不可见的 变量 系统预定义变量 常用系统变量H O M E 、 HOME、 HOME、PWD、 S H E L L 、 SHELL、 SHELL、USER 等 查看系统变量的值 (144) root@ localhost ~/sy] $ echo $HOME /root显示当前shell中所有变量 set 声明静态变量:readonly 变量,注意:不能 unset 自定义变量 基本变量 定义变量: 变量名=变量值,注意,=号前后不能有空格撤销变量:unset 变量名 变量定义规则 变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。等号两侧不能有空格在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。变量的值如果有空格,需要使用双引号或单引号括起来。export 变量 可把变量定义为全局变量 特殊变量$n n 为数字,$0 代表该脚本名称,$1- 9 代 表 第 一 到 第 九 个 参 数 , 十 以 上 的 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如{10}) (150) root@ localhost ~/sy] $ vim mysh.sh (151) root@ localhost ~/sy] $ vim test.sh #!/bin/bash echo $0 echo $1 echo $2 (152) root@ localhost ~/sy] $ bash test.sh 1 2 test.sh 1 2$# 获取所有输入参数个数,常用于循环,判断参数的个数是否正确以及加强脚本的健壮性 $* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体 $@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待 $? 最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一 个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明 上一个命令执行不正确。 运算符“ ( ( 运 算 式 ) ) ” 或 “ ((运算式))” 或 “ ((运算式))”或“[运算式]” 计算(2+3)* 4 的值 (154) root@ localhost ~/sy] $ echo $[(2+3)*4] 20 条件判断[ condition ](注意 condition 前后要有空格) 常用判断条件两个整数之间的比较 -eq 等于(equal) -ne 不等于(not equal) -lt 小于(less than) -le 小于等于(less equal) -gt 大于(greater than) -ge 大于等于(greater equal) 注:如果是字符串之间的比较 ,用等号“=”判断相等;用“!=”判断不等。 按照文件权限进行判断 -r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute) 按照文件类型进行判断 -e 文件存在(existence) -f 文件存在并且是一个常规的文件(file) -d 文件存在并且是一个目录(directory) 实际操作helloworld.sh 是否具有写权限 (159) root@ localhost ~/sy] $ [ -w mysh.sh ] (160) root@ localhost ~/sy] $ echo $? 0 流程控制 if判断(1)单分支 if [ 条件判断式 ];then 程序 fi或者 if [ 条件判断式 ] then 程序 fi 多分支 if [ 条件判断式 ] then 程序 elif [ 条件判断式 ] then 程序 else 程序 fi注意事项: [ 条件判断式 ],中括号和条件判断式之间必须有空格 if 后要有空格 case 语句 !/bin/bash case $1 in "1") echo "banzhang" ;; "2") echo "cls" ;; *)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。 双分号“;;”表示命令序列结束,相当于 java 中的 break。 最后的“*)”表示默认模式,相当于 java 中的 default。 for 循环 #!/bin/bash sum=0 for((i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |