GitHub特殊的查找资源小技巧
常用前缀后缀
- 找百科大全 awesome xxx
- 找例子 xxx sample
- 找空项目架子 xxx starter / xxx boilerplate
- 找教程 xxx tutorial
正文
在vim编辑器中显示行号,在命令中输入:set nu
单行注释 #
多行注释
1 | :<<! |
后台运行脚本 ./myShell.sh &
位置参数 $* 和 $@ 都是将后面的参数当作整体,但是在for中有区别,$*会返回一个整体语句 执行一次;$@会遍历执行多次 打印多行结果
创建shell脚本
- 创建shell文件。vim myShell.sh
- 写代码。第一行通常
#!/bin/bash
接下来再输入命令 比如:echo "hello,world!"
- ll命令 可以看到myShell文件
- 执行
- 方式一:添加权限
chmod 744 myShell.sh 给所有者一个x权限
ls命令 看到绿色的myShell.sh 输入./myShell.sh 得到输出hello,world! - 方式二:sh执行
sh ./myShell.sh
得到输出hello,world!
- 方式一:添加权限
shell变量
变量分为:系统变量和用户自定义变量
系统变量:$HOME $PWD $USER 等
输出系统变量:
echo "PATH=$PATH"
或者用`set | more` 命令分页显示
自定义变量
变量名称一般习惯为大写,等号两侧不能有空格
1
2
3
4A = 100
echo "A=$A"
unset A
echo "A=$A"readonly 变量 不能 unset
- 将命令返回值赋给变量
- A=``反引号,运行里面的命令,并把结果返回给变量A
- A=$()等价于反引号
- 将命令返回值赋给变量
基本语法:
- export 变量名=变量值 (将shell变量输出为环境变量)
- source 配置文件 (让修改后的配置信息立即生效)
- echo $变量名 (查询环境变量的值)
创建脚本程序
vim position.sh
echo “$0 $1 $2”
echo “$*” //30 6
echo “$@”//30 6
echo “参数个数=$#” //参数个数2
chmod 744 position.sh
./position.sh 30 6
//得到输出 ./position.sh 30 60
预定义变量
$$ 当前进程号
$! 最后的进程号
$? 执行的值
shell运算符
基本语法
“$[运算式]”
expr m + n //注意expr运算符间要有空格,用反引号括起来
shell控制语句
条件控制
[ condition ] (注意codition前后要有空格)
codition非空返回true
[ codition ]&& echo Ok || echo notok 条件满足,执行后面的语句
条件判断
两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
文件权限判断
-x 有执行权限 [ -x 文件 ]
文件类型
-f 文件存在并且是一个常规文件
-e 文件存在
-d 文件存在并使一个目录
案例
案例一:“OK”是否等于”OK”
1
2
3
4if [ "ok" = "ok" ]
then
echo "equal"
fi案例二:23是否大于等于22
1
2
3
4
5
6
7if [23 -gt 22]
then
echo "大于"
elif [23 -eq 22]
then
echo "等于"
fi
case语句
案例:当命令行参数是1时,输出”周一”,是2时,就输出“周二”,其他情况输出”other“
1
2
3
4
5
6
7
8
9
10
11case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
for循环
案例
案例一:打印命令行输入的参数
1
2
3
4for i in "$@"
do
echo "the num is $i"
done遍历的是$@
案例二:从1加到100
1
2
3
4
5
6SUM=0
for((i=1;i<=100;i++))
do
SUM=$[$SUM+$i]
done
echo "sum=$SUM"
while循环
while后面要有空格
案例一:从命令行输入一个数n,累加1+2+…+n的值
1
2
3
4
5
6
7
8SUM=0
i=0
while [ $i -le $1 ]
do
SUM=$[$SUM+$i]
i=$[$i+1]
done
echo "sum=$SUM"
shell读取控制台输入
前面通过位置参数来读取的是通过命令行的数据
基本语法
read 选项 参数
选项:
-p 提示信息
-t 时间范围内,等待时间
参数:
变量:指定读取值的变量名
案例
案例一:读取控制台输入一个num值
1
2read -p "请输入一个数num=" NUM
echo "你输入的是num=$NUM"
- 案例二:读取控制台输入一个num,在10秒内输入
1
2
read -t 10 -p "请输入一个数num=" NUM
echo "你输入的值是num=$NUM"
shell函数
系统函数
- diranme 得到路径
- basename 得到文件名
自定义函数
基本语法
定义语法见案例,调用直接写函数名funname[值]
shell函数定义的时候不需要写形参
案例
案例一:计算两个参数的和
1
2
3
4
5
6
7
8
9function sum(){
SUM=$[$n1+$n2]
echo "和是=$SUM"
}
read -p "请输入第一个数n1" n1
read -p "请输入第二个数n2" n2
调用
sum $n1 $n2
实验:
设计一个程序cuts,由标准输入设备上读入数据、获取由第一个参数n和第二个参数m所限定范围的字符串,其中n和n都是整数。即从输入的字符串中提取出n和m之间限定的所有字符,(要求必须使用变量引用表达式和基本的过程控制语句)。例如命令输入:
$cuts 3 5
用户输入 abcdefg,则程序输出cde
脚本:(其实直接调用现成的截取字符串的方法就可以,老师不让)
vim cuts.sh
chmod 744 cuts.sh
1 | read -p "请输入字符串str:" STR |