1. shell脚本开头
#!/bin/bash #shell脚本开头
2. 注释
##单行注释
:<<!#多行注释
...
...
!
3. 字符串
name="java"
echo ${#name} #统计name的长度
4. 反引号
反引号: 被``引起来的内容解释器优先执行
5. 变量
name="yinyongjie";
echo $name 也可写成 echo ${name}
$输出变量
变量名和等号之间不能有空格
6.流程控制
for循环
数字循环写法一:
for((i=0;i<10;i++));
do
echo "$i-----"
done
数字循环写法二:
for i in {1..10}
do
ehoc "$i-----"
done
数字循环写法三:
for i in $(seq 1 10)
do
echo "$i---"
done
字符循环:
for i in `ls`
do
echo "$i"
done
==等于
-gt大于
-lt小于
if 语句语法格式:
if condition
then
command1
command2
...
commandN
fi
if else 语法格式:
if condition
then
command1
command2
...
commandN
else
command
fi
while 语句
while condition
do
command
done
无限循环
while :
do
command
done
或者
while true
do
command
done
case语法 : 如果值没有找到匹配的模式用*捕获该值
case 值 in
模式1)
command1
command2
...
commandN
;;
模式2)
command1
command2
...
commandN
;;
esac
结束语
breakbreak命令允许跳出所有循环
continue 它不会跳出所有循环,仅仅跳出当前循环。
7. 标准输入
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
8. 输出
echo自动带换行
printf不带换行
-e开启转义
\n换行
\c不换行
例子1:
echo -e "OK! \n" # -e 开启转义
echo "It it a test"
输出结果:
OK!
It it a test
例子2:
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
输出结果:
OK! It is a test
9. 覆盖和追加
>输出重定向(覆盖)
>>输出重定向(追加)
10. 数组
语法: array_name=(value1 ... valuen)
读取数组:${array_name[index]}
获取数组中的所有元素: ${my_array[*]} 或者 ${my_array[@]}
获取数组的长度: ${#my_array[*]} 或者 ${#my_array[@]}
遍历数组如下:
arr=(1 2 3 4 5)
for((i=0;i<${#arr[*]};i++));
do
echo "------${arr[$i]}"
done
11. 函数
语法:可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
[ function ] funname [()]
{
action;
[return int;]
}
12. 日期
date
date +%Y%-m-%d
date +%F#输出格式:2017-01-01
date +"%Y-%m-%d %H:%M:%S"
date -d "+1 day" +%Y-%m-%d
date -d "-1 day" +%Y-%m-%d
date -d "+1 month" +%Y-%m-%d
date -d "-1 month" +%Y-%m-%d
date -d "+1 year" +%Y-%m-%d#1年前
date -d "-1 year" +%Y-%m-%d
date -d "+1 year" +%F