shell脚本常用命令

#!/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

 

posted on 2023-11-06 13:50  飘杨......  阅读(31)  评论(0编辑  收藏  举报