- operation
bash a.sh [参数直接添加]
- 引申
- [` `]倒引号,被括起来表示是需要执行的命令
- [" "]双引号,里面出现$(表示取变量名)、`(表示执行命令)、\(转义),其余的表示字符串
- [' ']单引号,里面所有的都表示字符串,包括特殊字符
- if-elif-else
- 不含参
# 查看当前目录是否存在a.sh文件
if ls -l a.sh; then
echo "ls return true"
elif [ 表达式 ]
then
echo "..."
else
echo "ls return false"
fi
echo "all"
- 含参数
# 字符串比较 =或者==
# 运算符两边要有空格
# 字符串两边要有空格,才会被解析
# []内两边要有空格
if [ "$1" = "me" ];then
echo "You are female..."
else
echo "$1 is male..."
fi
- 字符串比较:==、=、!=
- 整数比较:
-lt # 小于
-le # 小于等于
-gt # 大于
-ge # 大于等于
-eq # 等于
-ne # 不等于
- 逻辑判断:&&、||、!
- for循环
- while循环
- $常量
while [ "$1" = "me" ];
do
echo "num=$1"
break # 终止循环
done
- $变量
i=7
j=10
while[ $i -lt $j ]
do
echo "num1=$i,num2=$j"
((i++))# 单括号不被解析
done
- dirname、$0使用
# dirname 指定脚本所在的路径
# $0 当前脚本的名称(包括后缀名,默认带包路径)
# `basename $0` 直接显示脚本名称,不带包路径
# $(命令)返回该命令的结果
dir=`dirname $0`
echo $dir
- 文件测试运算符
# 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是则返回true
-f filename
# 案例:
if [ -f `dirname $0` ];then
echo "common"
else
echo "not common"
- $?使用
# $?获取上一个命令的退出状态
# 步骤1:
exit 0
# 步骤2:
if [ $? == "0" ]
then ...
- ln -s使用
# 软连接
# ln -s 源文件 目标文件
# 作用:
# 1.为某一个文件在另外一个位置建立一个`副本`,`副本`并不占用内存。
# 2.而且,`副本`内容和源文件是同步的。
# 3.若目标文件不存在,自动帮你创建文件
vi source.log
ln -s source.log target.log
- > 和 >>
# > 创建
# >> 追加
echo 'hello shell' > out.txt
# > 和 >> 都会默认创建out.txt
# > 将字符串保存到out.txt中,当out.txt存在时,首先将原文件内容清空,再追加
# >> 将字符串直接追加到文件的末尾
- expr
# expr实现数值运算、数值和字符串比较、字符串匹配、字符串提取、字符串长度计算等
# expr 算术表达式优先级低于字符串表达式、高于逻辑关系表达式
CNT=1
CNT=`expr $CNT + 1`
- 新建文件夹,如果文件夹名称出现^M或者?
# 首先打开配置文件或者shell查看当前 文件的格式
vi a.sh
# 查看文件格式
:set ff
# fileformat=dos 表示是windows下的文件需要转化为linux文件
# 修改文件格式为unix
:set ff=unix # 或者 :set fileformat=unix
# 直接保存退出即可
- $$、$!、$?、$*、$@、$#、$0
# $$ Shell本身的PID(ProcessID)
# $! Shell最后运行的后台Process的PID
# $? 前一次运行的命令的结束代码(返回值)
# $* 所有参数列表。
# $@ 所有参数列表。
# $0 当前脚本的文件名
# $1...$n 分别是第一个参数...第n个参数