adbshell执⾏sh脚本_Shell命令脚本初步认识,Shell脚本⼊门
基于linux就改这么学的demolinux循环执行命令脚本
简单的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 ./test.sh #使脚本具有执⾏权限./test.sh #执⾏脚本
[root@virtualLinux file]# bash test.sh/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 test1.sh#!/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]# lstest1.sh test.sh[root@virtualLinux shell]# vim test2.sh[root@virtualLinux shell]# cat test2.sh#!/bin/bashFile="test.sh"if [ -e $File 双分⽀结构
双分⽀结构语法关键字if then else if 它只进⾏⼀次if条件,如果满⾜执⾏then 不满⾜执⾏else。ping 命令中 -c定义重试次数,-i定义重发间隔时间,-W定义参数超时等待时间例1:ping 百度,如果能连通输出在线,不能连通输出不在线
[root@virtualLinux shell]# more test3.sh#!/bin/bashping -c 3 -i 0.5 -W 3 www.baiduif [ $? -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 test4.sh[root@virtualLinux shell]# more test4.sh#!/bin/bashread -p "请输⼊成绩:" GRADEif [ $GRADE -ge 80 ] then echo "优"elif [ $
for 条件循环语句
for 循环在处理范围数据时,是最适合是,它可以读取⽂本数,也可以做⾃⼰的循环语法格式
for 变量名 in 取值列表do 命令序列done
for 变量名 in 列表⽂件do 命令序列done
例1:循环输出数字或者⽬录
[root@virtualLinux shell]# lstest1.sh test2.sh test3.sh test4.sh test5.sh test.sh[root@virtualLinux shell]# cat test5.sh#!/bin/bashfor num in {1..10}do echo
最后⼀个执⾏ls 命令的也可以执⾏⽂件,例如
while 条件循环语句
while是不断的重复循环执⾏,直到循环条件为false,或者执⾏exit 0命令才会退出循环语法格式
while 条件 do 命名序列done
列1:做⼀个循环
[root@virtualLinux shell]# cat test6.sh#!/bib/bashflag=truenum=1while $flagdo echo $num; num=`expr $num + 1`; if [ $num -eq 3 ] then flag=false; fidon
case 条件语句
case条件就是java中的switch⾮常相似,使⽤场景基本相同
case 变量值 in 条件1) 命令1 ;;条件2) 命令2 ;;条件3) 命令3 ;;......*) 默认命令esac
1、) 相当于其他语⾔中的default。
2、除了)模式,各个分⽀中;;是必须的,;;相当于其他语⾔中的break
3、 | 分割多个模式,相当于or
例1:⼀个简单的case 语句
[root@virtualLinux shell]# cat test8.sh#!/bin/bashread -p "请输⼊⼀个字符,并按 Enter 键确认:" KEYcase "$KEY" in[a-z]|[A-Z]) echo "您输⼊的是字母。" ;;[0-9]) e
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论