SHELL
#SHELL分享
##shell简介
shell是一种可以直接操作Linux 接口的脚本语言
#!/bin/bash
echo hello world!
##shell语法
####变量: $, unset
#!/bin/bash
your_name="ZHAOJIAN"
echo $your_name
unset your_name
echo $your_name
###变量类型:
1. 局部变量
2. 环境变量: *export* 设置环境变量
3. shell变量
###字符串:"", ''
####拼接字符串
your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
####获取字符串长度
string="abcd"
echo ${#string} #输出 4
####提取子字符串
string="runoob is a great site"
echo ${string:1:4}
###参数:
* $0--文件名
* $n--第几个参数
* $#--参数个数
* $?--上一个退出码
###test:条件
###if
#!/bin/bash
a=30
b=200
if [ $a -eq $b ]
then
echo "a 等于 b"
elif [ $a -gt $b ]
then
echo "a 大于 b"
elif [ $a -lt $b ]
then
echo "a 小于 b"
else
echo "没有符合的条件"
fi
整数比较:
-eq 等于,如:if [ "$a" -eq "$b" ]
-ne 不等于,如:if [ "$a" -ne "$b" ]
-gt 大于,如:if [ "$a" -gt "$b" ]
-ge 大于等于,如:if [ "$a" -ge "$b" ]
-lt 小于,如:if [ "$a" -lt "$b" ]
-le 小于等于,如:if [ "$a" -le "$b" ]
< 小于(需要双括号),如:(("$a" < "$b"))
<= 小于等于(需要双括号),如:(("$a" <= "$b"))
> 大于(需要双括号),如:(("$a" > "$b"))
>= 大于等于(需要双括号),如:(("$a" >= "$b"))
字符串比较:
= 等于,如:if [ "$a" = "$b" ]
== 等于,如:if [ "$a" == "$b" ], 与=等价
注意:==的功能在[[]]和[]中的行为是不同的,如下:
1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true
3
4 [ $a == z* ] # File globbing 和word splitting将会发生
5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true
!= 不等于,如:if [ "$a" != "$b" ], 这个操作符将在[[]]结构中使用模式匹配.
< 小于,在ASCII字母顺序下.如:
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ] 在[]结构中"<"需要被转义.
> 大于,在ASCII字母顺序下.如:
if [[ "$a" > "$b" ]]
if [ "$a" \> "$b" ] 在[]结构中">"需要被转义.
-z 字符串为"null".就是长度为0.
-n 字符串不为"null"
###for 循环
for var in item1 item2 ... itemN
do
command1
command2
...
commandN
done
###while 循环
while condition
do
command
done
##常用命令
* cat 打印文件内容 -n 显示行号
* grep
* | 管道
* -v 反选
* egrep "正则"
* wc -l 统计行数
* find *查找文件*
* 测试,计算一下我们一共有多少个Activity文件
* awk *计算和数据处理*
awk -F '\/' '{print $(NF)}'
* md5
* diff -ac
* sed *修改文本*
sed -i "" 's/buildAsPkg=false/buildAsPkg=true/g' ${settings_gradle}
* pwd
* cd ~|-|..
* cp
* mv
* mkdir
* touch
* top
* rm
* chomd 777
* echo *输出*
* printf 格式化输出
* eval *执行命令*
* exit n 退出码
* $? 上个shell的退出码
* du -sh 查看文件大小
* result = \`command` 获取程序的运行结果
* curl 简单的http请求 -H -d -F
* ps -ef 查看进程
* \> 输出重定向
* \& 程序挂起
* sort 排序 -u 去重排序
* head 从头读文件
* tail 从某位读(主要用来跟日志的)
* uniq 去重
* read value: 提示用户输入,并将输入赋值给变量
* ssh 登录服务器
* sudo
* ping
* java -jar/-version
* adb shell 在android机器上执行shell 命令
* input 模拟点击
* monkey
* pm list packages
* ps -ef
* logcat
* man 查看命令如何使用,或者一般命令有-h, -help
* history 最近使用的命令
* tab 自动补齐
* dirname/basename 路径操作