#!/bin/bash echo $1 adb devices > devices.txt echo "开始读取设备" line_num=0 while read -r line do if [ $line_num != 0 ]&&[ -n "$line" ]; then devices_info=`echo $line | cut -d " " -f 1` echo $devices_info fi let line_num++ done < devices.txt echo "hello world" echo "你好啊,大妹子" NAME="杨洛峋" echo "$NAME" echo $NAME #系统变量 #显示系统目录 echo $HOME #显示当前目录(相当于pwd命令) echo $PWD #将命令返回值赋值给变量 #LIST=`ls` 反引号,执行里面的命令 #LIST=$(ls) 等价于反引号 LIST=`ls` echo "命令返回值:$LIST" #$0 代表命令本身、$1-$9 代表第1到9个参数,10以上参数用花括号,如 ${10} #输出命令行输入参数0,1,2 echo $0 $1 $2 #输出命令行第一个参数 echo $0 #输出命令行第二个参数 echo $1 echo "------" #命令行中所有参数,且把参数看成一个整体 echo $* #命令行中所有参数,且把每个参数区分对待 echo $@ #所有参数个数 echo $# #下面演示预定义变量 #$$ :当前进程的 PID 进程号 echo "输出当前进程的PID" echo $$ #$! :后台运行的最后一个进程的 PID 进程号 echo "输出后台运行的第一个进程的PID" echo $! #$? :最后一次执行的命令的返回状态,0为执行正确,非0执行失败 echo "最后一次执行的命令的返回状态" echo $? #运算符 #$((运算式)) 或 $[运算式] #expr m + n 注意 expr 运算符间要有空格 #expr m - n #expr \*,/,% 分别代表乘,除,取余 echo $((2+3)) echo $(((2+3)*4)) echo $[(2+3)*4] echo `expr 2 + 3` #条件判断 #[ condition ] 注意condition前后要有空格。非空返回0,0为 true,否则为 false if [ 'yw'='yw01' ] then echo '等于' fi if [ 20 > 10 ] then echo '大于' fi #判断指定的文件是否存在.这里的-e我试了一下,加不加都可以(windows10) if [ -e devices.txt ] then echo '存在' fi if [ 'yw' = 'yw' ] && echo 'hello' || echo 'world' then echo '条件满足,执行后面方法' fi AGE=7 if [ $AGE -gt 5 ] then echo '年龄大于5岁了' elif [ $AGE -lt 5 ] echo '年龄刚好5岁' then echo '年龄不足5岁' fi #case语法 case $AGE in '5') echo '五岁了' ;; '6') echo '6岁了' ;; *) echo '不知道年龄多大' ;; esac #for循环 #疑问,如何在shell脚本中定义一个数组 NAMES=('德玛西亚' '德邦总管' '嘉文四世') for item in $NAMES do echo $item done #循环输出命令行中的参数 for item in "$*" do echo "命令行中参数:$item" done for item in "$@" do echo "$item" done #输出1加到100 SUM=0 for ((i=1;i<100;i++)) do SUM=$[$SUM+$i] done echo $SUM #while循环 TOTAL=0 INDEX=0 while [ $INDEX -le $1 ] do TOTAL=$[$TOTAL+$INDEX] INDEX=$[$INDEX+1] done echo $TOTAL #-eq //equals等于 #-ne //no equals TEF 不等于 #-gt //greater than AF 大于 #-It //less than IF 小于 #-ge //greater equals大于等于 #-1e //1ess equals小于等于 #注: #1、在shell中进行比较时,结果为0代表真,为1代表假. #2、-eq,-ne等比较符只能用于数字比较,有字符也会先转换成数字然后进行比较。 #读取控制台输入 #语法 read(选项)(参数) #read -p "请输入一个num1=" NUM1 #echo "你输入的num1的值是:$NUM1" #read -t 10 -p "请在10秒内输入一个输在num2=" NUM2 #echo "你输入的num2的值为:$NUM2" #shell中的函数 #basename,删掉路径最后一个 / 前的所有部分(包括/),常用于获取文件名 #基本语法 #basename [pathname] [suffix] #basename [string] [suffix] #如果指定 suffix,也会删掉pathname或string的后缀部分。 basename /user/bin/sort basename include/sudio.h basename incude/sudo.h .h #dirname,删掉路径最后一个 / 后的所有部分(包括/),常用于获取文件路径。 #基本语法 #dirname pathname #如果路径中不含 / ,则返回 '.' (当前路径 dirname /user/bin dirname dir/str dir1/str dirname stuio.h result=`dirname /user/bin` echo "获取结果:$result" #自定义函数 function getName(){ echo "获取用户名称" } #调用函数 getName
标签:脚本,shell,devices,echo,item,参数,常用命令,fi,line From: https://www.cnblogs.com/tony-yang-flutter/p/17812468.html