#!/bin/bash 声明脚本使用的shell名称
# 注释
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH 声明环境变量
交互式脚本
read -p "Please input your first name: " firstname #提示用户输入
echo -e "\nYour first name is: $firstname" #输出结果
创建一个带日期的文件
read -p "input your filename: " fieuser #提示用户输入
filename=${fileuser:-"filename"} #判断是否输入文件名
date=$(date +%Y%m%d) #今天的日期
file=${filename}${date} #组成文件名
touch "$file" #创建文件
数值运算
read -p "first nu: " firstnu
read -p "second nu " secnu
total=$($firstnu * $secnu)
关于文件名的文件类型判断 test -e filename 表示是否存在
-e 文件是否存在
-f 文件名是否存在且为文件
-d 文件名是否存在且为目录
-b 文件名是否存在且为block device设备
-c 文件名是否存在且为character device设备
-S 文件名是否存在且为Socket文件
-p 文件名是否存在且为FIFO(pipe)文件
-L 文件名是否存在且为连接文件
关于文件的权限检测, 如test -r filename 是否可读
-r 文件名是否存在且可读
-w 文件名是否存在且可写
-x 文件名是否存在且可执行
-u 文件名是否存在且有 SUID的属性
-g 文件名是否存在且有 SGID的属性
-k 文件名是否存在且有 Sticky bit的属性
-s 文件名是否存在且为非空白文件
两个文件之间的比较, 如:test file1 -nt file2
-nt file1是否比file2新
-ot file1是否比file2旧
-et 判断file1与file2是否为同一个文件,可用在判断硬链接上
关于两个整数之间的判断,如test n1 -eq n2
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
判定字符串数据
test -z string 字符串为空时,为true
test -n string 字符串为空时,为false
test str1 = str2 若相等,则为true
test str1 != str2 若不相等,则为true
多重条件判定,例如:test -r filename -a -x filename
-a 两个条件同时成立时,则为true
-o 任何一个条件成立时,则为true
! 反向状态,如test ! -x file,file不是可执行文件时,为true
[ ] 条件判断符号
shell脚本默认变量
$0 shell脚本文件名, $1 $2..,shell脚本后跟的参数
$# 后接参数个数
$@ 代表"$1" "$2" "$3
$* 代表"$1c$2c$3c$4",其中c为分隔符,默认为空格
shift:造成参数变量号码偏移
条件判断
if [ 条件判断式 ]; then
当前条件成立时,可进行的命令
fi
&&代表AND
||代表or
多重复杂条件判断
if [ 条件判断式一 ]; then
当前条件成立时,可进行的命令
elif [ 条件判断式二 ]; then
当前条件成立时,可进行的命令
else
前面条件都不成立时,可执行的命令
if
case $变量名称 in <==关键字为case,还有变量前有$
"第一个变量内容")
程序段
;;
"第二个变量内容")
程序段
;;
*)
程序段
;;
esac
while [ condition ] <==中括号内的状态就是判断式
do <==do 是循环的开始
程序段落
done <==done 是循环的结束
当condition条件成立时,就进行循环
until [ condition ]
do
程序段落
done
当condition条件成立时,就终止循环
for...do...done固定循环
for var in con1 con2 con3 ...
do
程序段
done
for...do...done的数值处理
for (( 初始值; 限制值; 执行步长 ))
do
程序段
done
shell脚本的追踪与调试
sh [ -nvx ] scrips.sh
-n : 不要执行script,仅查询语法的问题;
-v : 在执行script前,先将script的内容输出到屏幕上;
-x : 在执行过程中,将使用到的script内容显示到屏幕上。