2023年8月2日发(作者:)
adbshell执⾏sh脚本_Shell命令脚本初步认识,Shell脚本⼊门基于linux就改这么学的demo简单的Shell脚本Shell 是⼀个⽤ C 语⾔编写的程序,它是⽤户使⽤ Linux 的桥梁.Shell 脚本(shell script),是⼀种为 shell 编写的脚本程序。业界所说的shell 通常都是指 shell 脚本,,shell 和 shell script 是两个不同的概念。Shell 脚本⽂件的名称可以任意,但为了避免被误以为是普通⽂件,建议将.sh 后缀加上,以表⽰是⼀个脚本⽂件。例1:⼀个简单的Shell脚步,显⽰当前⽬录#!/bin/bash# 这个是⼀⾏注释pwdls -al第⼀⾏:脚本声明(#!)⽤来告诉系统使⽤哪种 Shell 解释器来执⾏该脚本。第⼆⾏:第⼆⾏的注释信息(#)是对脚本的注释,不⼀定⾮要写到第⼆⾏,根据需要来写。第三⾏:第三⾏和以后的都是我们的脚本命令。执⾏⼀下,执⾏shell脚本有两种⽅法,设置执⾏权限或者bash 脚本名,这⾥⽤第⼆种,发现出现预期结果。chmod +x ./ #使脚本具有执⾏权限./ #执⾏脚本[root@virtualLinux file]# bash /home/vsftpd/java/file总⽤量 8drwxr-xr-x. 4 ftpuser ftp 65 10⽉ 27 19:18 .drwx------. 3 ftpuser ftp 74 5⽉ 13 00:15 ..drwxr-x接收⽤户参数在实际的使⽤过程中,脚本可能会根据情况传递参数,在Shell中,已经设置好了需要传递的参数⽅法。Linux 系统中的 Shell 脚本语⾔早就考虑到了这些,已经内设了⽤于接收参数的变量,变量之间可以使⽤空格间隔。例如$0对应的是当前 Shell 脚本程序的名称,$#对应的是总共有⼏个参数,$*对应的是所有位置的参数值,$?对应的是显⽰上⼀次命令的执⾏返回值,⽽$1、$2、$3……则分别对应着第N个位置的参数值。$* 和 $@ 的区别例1:测试⼀下各个参数的⽤法[root@virtualLinux file]# cat #!/bin/bashecho "Shell脚本名为$0"echo "总共有$#个参数,分别是$*"echo "第⼀个参数为$1,第三个参数为$3"echo "执⾏ls -l 命令判断⽤户的参数Shell 脚本中的条件测试语法可以判断表达式是否成⽴,若条件成⽴则返回数字 0,否则便返回其他随机数值。测试语句格式:[ 条件表达式 ]按照测试对象来划分,条件测试语句可以分为 4 种:➢ ⽂件测试语句;➢ 逻辑测试语句;➢ 整数值⽐较语句;➢ 字符串⽐较语句。⽂件测试所⽤的参数例1:判断⼀个⽂件是⽬录还是⽂件[root@virtualLinux file]# [ -d /home/vsftpd/java/file ][root@virtualLinux file]# echo $?0[root@virtualLinux file]#任何语⾔都离不开逻辑运算,在Shell脚本中也⼀样,有与运算,符号&&、或运算,运算符||、⾮运算,运算符!。例1:与逻辑,判断当前对象是⽬录就输出folder[root@virtualLinux file]# [ -d test ][root@virtualLinux file]# echo $?0[root@virtualLinux file]# [ -d test ] && echo "folder"folder[root@virtualLinux file]#例2:或逻辑,判断当前⽤户是否为root⽤户[root@virtualLinux file]# echo $USERroot[root@virtualLinux file]# [ $USER = root ] || echo "login is root"[root@virtualLinux file]# su oracle[oracle@virtualLin例3:⾮逻辑,判断当前⽤户是否为root⽤户[root@virtualLinux ~]# [ $USER = root ] && echo "root"root[root@virtualLinux ~]#由上⾯三个例⼦可以看出,在执⾏[ 条件表达式 ] 后,如果条表达式成了,&& 与条件后⾯的命令会执⾏,如果不成⽴,与条件后⾯的命令不会执⾏。如果条件表达式后⾯跟的是||或条件,如果条件表达不成⽴会执⾏,如果成⽴不会执⾏。例4:演⽰条件表达式的执⾏[root@virtualLinux ~]# [ ! $USER = root ] && echo "root" || echo "other"other[root@virtualLinux ~]#例4可以看出,先条件判断⽤户为root,然后!取⾮,反条件,执⾏个与运算不成⽴,执⾏的第⼆或运算,输出的other。在linux中和java正好相反,字符串⽐较⽤等号,对数字的操作不能使⽤数学中的⽐较符号。整数⽐较的运算符例1:做⼀个简单的数字⼤⼩判断root@virtualLinux ~]# [ 10 -eq 10 ][root@virtualLinux ~]# echo $?0[root@virtualLinux ~]# [ 10 -lt 2 ][root@virtualLinux ~]# echo $?1[root@virtualLinux ~]# [
常见的字符串⽐较例1:⼀个没有定义的变量判断为空后赋值再次空判断[root@virtualLinux ~]# echo $String[root@virtualLinux ~]# [ -z $String ][root@virtualLinux ~]# echo $?0[root@virtualLinux ~]# String="123"[root@virtualLinu流程控制语句if、for、while、case 在Shell脚本中必不可少的,应该说在现在所有的编程语⾔都离不开这4中流程控制语句。if 条件语句if 条件语句分为单分⽀结构,双分⽀结构,多分⽀结构三种。单分⽀结构单分⽀结构就是只有⼀个条件,如果条件成⽴,执⾏预设的命令。语法格式if 条件 then 命令fi例1[root@virtualLinux shell]# [root@virtualLinux shell]# vim [root@virtualLinux shell]# cat #!/bin/bashFile=""if [ -e $File双分⽀结构双分⽀结构语法关键字if then else if 它只进⾏⼀次if条件,如果满⾜执⾏then 不满⾜执⾏else。ping 命令中 -c定义重试次数,-i定义重发间隔时间,-W定义参数超时等待时间例1:ping 百度,如果能连通输出在线,不能连通输出不在线[root@virtualLinux shell]# more #!/bin/bashping -c 3 -i 0.5 -W 3 [ $? -eq 0 ] then echo "on-line"else echo "off-line"fi[root@virtualL多分⽀结构多分⽀结构就是if,then,elsif,else,fi关键字组成,相当于⼝语的如果。。。。那么,如果。。。那么。。。在 Linux 系统中,read 是⽤来读取⽤户输⼊信息的命令, 能够把接收到的⽤户输⼊信息赋值给后⾯的指定变量,-p 参数⽤于向⽤户显⽰⼀定的提⽰信息。例1:根据输⼊的成绩输出对应的字符串[root@virtualLinux shell]# vim [root@virtualLinux shell]# more #!/bin/bashread -p "请输⼊成绩:" GRADEif [ $GRADE -ge 80 ] then echo "优"elif [ $for 条件循环语句for 循环在处理范围数据时,是最适合是,它可以读取⽂本数,也可以做⾃⼰的循环语法格式for 变量名 in 取值列表do 命令序列donefor 变量名 in 列表⽂件do 命令序列done例1:循环输出数字或者⽬录[root@virtualLinux shell]# [root@virtualLinux shell]# cat #!/bin/bashfor num in {1..10}do echo最后⼀个执⾏ls 命令的也可以执⾏⽂件,例如cat le 条件循环语句while是不断的重复循环执⾏,直到循环条件为false,或者执⾏exit 0命令才会退出循环语法格式while 条件 do 命名序列done列1:做⼀个循环[root@virtualLinux shell]# cat #!/bib/bashflag=truenum=1while $flagdo echo $num; num=`expr $num + 1`; if [ $num -eq 3 ] then flag=false; fidoncase 条件语句case条件就是java中的switch⾮常相似,使⽤场景基本相同case 变量值 in 条件1) 命令1 ;;条件2) 命令2 ;;条件3) 命令3 ;;......*) 默认命令esac1、) 相当于其他语⾔中的default。2、除了)模式,各个分⽀中;;是必须的,;;相当于其他语⾔中的break3、 | 分割多个模式,相当于or例1:⼀个简单的case 语句[root@virtualLinux shell]# cat #!/bin/bashread -p "请输⼊⼀个字符,并按 Enter 键确认:" KEYcase "$KEY" in[a-z]|[A-Z]) echo "您输⼊的是 字母。" ;;[0-9]) e
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690915800a462679.html
评论列表(0条)