shell脚本基础命令学习(一)
shell的作用是解析用户的指令,将shell指令按照特定的流程,组合形成脚本。
查看当前系统shell版本:
编写一个简单的shell脚本后,可以使用下面几种方法来执行:
1,使用chmod给脚本增加x权限,如:chmod +x test.sh
2,/bin/sh 或者 /bin/bash 执行脚本(会创建子进程)
3,source ./test.sh 脚本执行
4,小括号方式,会创建子进程
环境变量,可以直接设置,例如var=100,使用unset var可以删除
通配符:
* 匹配一个或多个任意字符
? 匹配一个任意字符
[若干字符] 匹配括号内任意一个字符
命令代换:
小括号:
算术转换:
进制转换:
转义字符和特殊字符:
条件分支:
$? 代表返回值0为真,1为假
test 或者 [] 可以作为表达示判断
gt(大于),lt(小于),eq(等于),ne(不等于),le(小于等于),ge(大于等于)
括号判断,-f是普通文件,-d是文件夹,-z判断字符串是否为空
逻辑判断:
逻辑非 !
逻辑与 -a
逻辑或 -o
如:[ -f a.txt -a -d a.txt ]
要注意括号两边的空格,如果没有会出错
if分支语句:
echo "are you boy?" read yy if [ "$yy" = "yes" ];then echo "you are a boy" elif [ "$yy" = "no" ] echo "you are a girl" else echo "idk" fi
case分支语句:
echo "are you a boy?" read yy case "$yy" in y|yes|YES) echo "you are a boy";; [nN]*) echo "you are a girl";; *) echo "idk" exit 1;; esac
for循环语句:
for i in x y z do echo "$i" done
while循环语句:
echo "please input your passwd" read yy while [ "$yy" != "123" ];do echo "sorry,try again" read yy done echo "login success"
计算1+2+3+。。。。100求和:
sum=0 i=1 while [ $i -lt 101 ];do sum=$[sum+i] i=$[i+1] done echo $sum
位置参数和特殊变量:
$0 相当于C语言main函数的argv[0] $1、$2... 这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv[2]... $# 相当于C语言main函数的argc - 1,注意这里的#后面不表示注释 $@ 表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。 $* 表示参数列表"$1" "$2" ...,同上 $? 上一条命令的Exit Status $$ 当前进程号
函数的使用:
foo(){ echo "$0 - $1" } echo "start call foo" foo 11 22 echo "end call"
远程文件传送补充:
scp 1.txt ubuntu@192.168.11.11:/home/ubuntu