shell 脚本的第一行
#!/bin/bash
#!/bin/sh其实,sh是bash的一个软链接 sh -> bash
变量,字母下划线开头(好像是没有类型的)
#普通变量
var1=nihao#不能有空格
echo $var1 #使用$表示变量#环境变量echo $JAVA_HOME #全局变量用全大写
/etc/profil/e #全局环境变量存储位置#用户环境变量
/home/cen/.bash_profile #编辑文件后需要用source命令更新#删除变量
unset 变量名
位置参量,用于传递参数
#定义位置参量
echo "Hello $1 !!" #用$1,$2....${10},${11} ...表示接受到的第n个参数
#$0 表示当前脚本的文件名
#$# 表示传入参数个数
#$? 上一个命令的状态嘛,有一些依赖关系必须知道之前的执行情况#传入参数
./xxx.sh 参数一 参数二 #用空格分隔位置参数,如果位置参数有空格,使用"hello world!"
数组
#数组定义
arr=(zhangsan lisi wangwu)#数组引用
echo ${arr[0]} #zhangsan
echo ${arr[*]} #zhangsan lisi wangwu
echo ${#arr{*}} #3
查看时间
#当前时间
date1=$(date)#一天前
date2=$(date --date='1 days age')
date2=$(date --date='1 days')#一天后
date3=$(date --date='1 days')
date3=$(date --date='-1 days ago')
判断test -e filename 或者 [ -e filename ] []两端一定要有空格
#文件类型判断
#-e 判断文件是否exist
#-f 是否为file
#-d 是否为dir#权限判断
#-r 可读
#-w 可写
#-x 可执行#判断整数
#-eq equal相等
#-ne not equal不相等
#-gt greater than大于
#-lt less than小于#判断字符串
#-z zero空字符串
#-n not 非空
#=/== 相等
#!=不等
if语句
if [ -f "filename" ] && [ -e "filename" ] ; then
#todo...
#todo...
elif [ -e "filename" ]
#todo...
else
#todo...
fi
for循环
#for循环(1)
for var in 1 2 3 4 5
do
#todo...
done
#for循环(2)
n=10
sum=0
sum2=0
for((i=0;i<${n};i=i+1))
do
sum=$((${sum1}+$(i))) #正儿八经的加法
sum2=${sum2}+${i} #字符串拼接
done
while循环
#正经点while
while [ -e "filename" ]
do
#todo...
done
#当到型while
until [ -e "filename" ]
do
#todo...
done#配合cat和管道函数的while(不会应用场景)
cat a.txt | while read line
神奇的$符号
${变量}
$(可执行语句) #(1+1)带括号的才是可执行语句
执行shell脚本的四种方式
$/home/user/xxx.sh
$./xxx.sh
$. xxx.sh
$sh xxx.sh
四种方式区别