三、Linux——Shell脚本语言
2017-07-11 19:52
399 查看
【1】shell的三种类型
【2】创建
【3】chmod
【4】变量
【5】功能语句
【6】if
【7】case
【8】while
2、2_read.sh
3、3_expr.sh
4、4_test_cha
4000
r.sh
5、5_test_int.sh
6、6_test_file.c
7、7_if.sh
8、8_elif.sh
9、9_case.sh
10、10_case_sorce.sh
11、11_while.sh
12、12_for_in.sh
13、13_for_MAX.sh
14、14_for_cp.sh
15、15_fun.sh
shell 命令 shell 命令解释器 shell 脚本:shell命令的有序集合
【2】创建
1、创建一个以.sh结尾的文件 2、赋予可执行权限 3、执行
【3】chmod
rw- rw- r-- 二进制 110 110 100 八进制 6 6 4 chmod 776 1.sh
【4】变量
1--- 用户自定义变量 1、没有类型 2、赋值时等号两边禁止有空格 3、echo "$A" 2--- 位置变量 $0... ...$n(两位以上要加花括号 ${10}) 命令行的位置参数 3--- 预定义变量 $* $@ :所有命令行参数,除第一个以外 $# :命令行参数的个数,除第一个以外 $$ :PID $? :与上一条shell命令有关 1、承接上一条命令的执行状态 成功$?= 0 2、用于测test语句的结果真$?=0,假$?=1 3、承接函数的返回值 4--- 环境变量 $HOME
【5】功能语句
1--- read从标准输入读入一行,并依次赋值给后面的变量 剩余的数据甩给最后一个变量 2--- expr + - \* / % \( \) 1、表达式的格式 `expr $A + 1` 2、运算符两边必须留有空格 3--- test 0、测试的结果使用$?承接 1、测字符串 = :是否等于 != :是否不等 -z :是否为空 -n :是否为非空 2、测整数 -eq -ne -gt -ge -lt -le 相等 不等 大于 大于等于 小于 小于等于 3、文件 1>文件类型 linux b c d - l s p shell -b -c -d -f -L -S -p 2>权限 用户本身的权限 -r -w -x 3>其他 -e name 测试一个文件是否存在 -s name 测试name文件是否存在且不为空 f2 -nt f2 测试文件f1 是否比文件f2 更新 f2 -ot f2 测试文件f1 是否比文件f2更旧 4>test 可以用[]替代,注意与数据保留一个空格
【6】if
if 表达式 then 命令表 fi ******************* if 表达式 then 命令表1 else 命令表2 fi ******************* if 表达式 then 命令表1 elif 表达式 then 命令表2 else 命令表3 fi
【7】case
case 变量 in 模式1) 命令表1 ;; 模式2|3) 命令表2 ;; *) 命令表n ;; esac
【8】while
while 命令或表达式 do 命令表 done for 变量名 in 单词表 do 命令表 done
【10】函数
function function_name ( ) { command1 …… commandn } 1、function 是关键字 2、调用:function_name arg1 arg2 arg3 3、参数:$1 …… $n 4、返回:return $val //返回值是整数 5、$? 承接函数的返回值 6、变量默认是全局的,local使其变为局部的
【11】
-o or或 -a and与 exit 结束程序
源码及注释
1、1_val.sh#! /bin/bash #注释 A=hello #赋值=两边不能有空格 echo "A = $A" #取值要用$ #命令行参数 echo "\$0 = $0" echo "\$1 = $1" echo "\$2 = $2" echo "\$10 = ${10}" #两位以上要加花括号 #预定义变量 echo "\$* = $*" #除第一个参数后面的所有 echo "\$@ = $@" #同上 echo "\$# = $#" #除第一个参数的个数 echo "\$$ = $$" #进程PID echo "\$? = $?" #承接上一条命令的执行结果,正确输出0
2、2_read.sh
#! /bin/bash #read 从标准输入读入一行,并依次赋值给后面的变量 #剩余数据甩给最后一个变量 read A B C echo "A = $A" echo "B = $B" echo "C = $C" read D E echo "D = $D" echo "E = $E"
3、3_expr.sh
#! /bin/bash #计算表达式 expr格式 A=10 A=`expr $A + 10 \* 2` #``tab键上方位置 符号两边留有空格需要 echo "A = $A" read A A=`expr \( $A + $1 \) \* 2` #*、()需要转义符号 echo "A = $A"
4、4_test_cha
4000
r.sh
#! /bin/bash A=hello B=hello test $A = $B echo "\$1 = $?" #AB是否相等 test $A != $B #AB是否不等 echo "\$2 = $?" test $A = "HELLO" echo "\$3 = $?" test -n $A #是否非空 echo "\$4 = $?" test -z $A #是否空 echo "\$5 = $?" C="" test -z $C echo "\$6 = $?"
5、5_test_int.sh
#! /bin/bash A=10 B=12 test $A -eq $B echo "\$?1 = $?" test $A -ne $B echo "\$?2 = $?" test $A -lt $B echo "\$?3 = $?" test $A -gt $B echo "\$?4 = $?" test $A -le $B echo "\$?5 = $?" test $A -ge $B echo "\$?6 = $?"
6、6_test_file.c
#! /bin/bash test -d . echo "\$?1 = $?" >8.sh test -f ./8.sh echo "\$?2 = $?" ln -s 8.sh link test -d link echo "\$?3 = $?" test -w 8.sh echo "\$?4 = $?" [ -x 8.sh ] echo "\$?5 = $?" [ 1.sh -nt 8.sh ] echo "\$?6 = $?" rm ./8.sh ./link
7、7_if.sh
#! /bin/bash read A if [ $A -gt 100 -o $A -lt 0 ] then echo "error" exit fi if [ $A -le 100 -a $A -ge 90 ] then echo "A" fi if [ $A -le 89 -a $A -ge 80 ] then echo "B" fi if [ $A -le 79 -a $A -ge 70 ] then echo "C" fi if [ $A -le 69 -a $A -ge 60 ] then echo "D" fi if [ $A -le 59 -a $A -ge 0 ] then echo "E" fi echo "end"
8、8_elif.sh
#! /bin/bash read A if [ $A -eq 0 ] then echo "等于0" elif [ $A -gt 0 ] then echo "大于0" else echo "小于0" fi
9、9_case.sh
#! /bin/bash read A case $A in H|h) echo "hello" ;; W|w) echo "world" ;; O) echo "other" ;; *) echo "**" ;; esac
10、10_case_sorce.sh
#! /bin/bash read A if [ $A -gt 100 -o $A -lt 0 ] then exit fi A=`expr $A / 10` case $A in 10|9) echo "A" ;; 8) echo "B" ;; 7) echo "C" ;; 6) echo "D" ;; *) echo "E" ;; esac
11、11_while.sh
#! /bin/bash A=6 while [ $A -gt 0 ] do A=`expr $A - 1` if [ $A -eq 2 ] then # break continue fi echo "A = $A" sleep 1 done B=10 while [ $B -ne 0 ] do >file$B.txt B=`expr $B - 1` done
12、12_for_in.sh
#! /bin/bash i=0 for A in hello world beijing shanghai do echo "A = $A" i=`expr $i + 1` done echo "i = $i"
13、13_for_MAX.sh
#! /bin/bash MAX=$1 for A in $@ //巧用预定义变量 do if [ $MAX -lt $A ] then MAX=$A fi done echo "MAX = $MAX"
14、14_for_cp.sh
#! /bin/bash #1、创建一个目录dir,存在则提示exist 不存在则创建 #2、将当前路径下所有的普通文件拷贝到dir #3、将拷贝的文件名记录在1.txt文件内 if [ -d dir ] #判断文件夹是否存在 then echo "exist" else mkdir dir fi for file in `ls` #巧用命令置换,ls结果当参数 do if [ -f $file ] then cp $file dir echo "$file" >> 1.txt fi done
15、15_fun.sh
#! /bin/bash function fun() #声明一个函数 { local A=8 # A=8 默认全局,local A=8 局部 echo "fun" echo "\$0 = $0" echo "\$1 = $1" echo "\$@ = $@" echo "\$# = $#" return $A } fun world beijing 123 #传参 echo "\$? = $?" echo "A = $A"
相关文章推荐
- linux的shell脚本语法与C语言不同之一
- Linux系统下高级语言调用shell脚本
- linux脚本语言之shell 中的eval
- Linux脚本语言shell基础学习
- Linux环境下c语言程序执行shell脚本
- Linux系统下shell脚本语言学习手册指南
- linux学习shell----脚本3连发 ps ( 自动搭建本地YUM, 双色球摇号脚本, 点名脚本 )
- shell脚本语言简介
- linux学习之shell脚本 ------- 控制流结构
- linux执行shell脚本的
- linux直接执行shell脚本正常,使用定时任务crontab执行出错
- linux环境在tomcat启动或者停止后执行shell脚本,脚本内容备份图片文件夹
- linux下shell 网速监控脚本
- Linux下如何执行Shell脚本
- Linux【Shell脚本】—eval命令和命令代换(`和$())
- linux 之shell脚本练习
- Linux下统计某个目录下所有源代码行数的Shell脚本
- Linux中shell脚本自动输入密码
- Linux之ubuntu学习笔记(九):shell 脚本
- Linux下查找后门程序 CentOS 查后门程序的shell脚本