记录一些有用的shell script语法。
- 规范性要求
在脚本的开始写上事件、作者、需要的环境变量、功能说明等信息
- read
read -p "Please input your first name:" firstname #提示用户输入
read -p "PLease input your last name:" lastname
echo -e "\nYour full name is:$firstname $lastname"
- date的使用规范,以及判断用户是否输入信息
read -p "Please filename:" fileuser
#判断是否输入为空
filename=${fileuser:-"filename"}
#这里的格式,一个空格和符号都不能打错或者不同,内置格式设置
date1=$(date --date="2 days ago" +%Y%m%d)
date2=$(date --date="1 days ago" +%Y%m%d)
date3=$(date +%Y%m%d)
echo "$date1"
echo "$date2"
echo "$date3"
- test 判断
test -e filename && echo "Exist" || echo "Not Exist"
#判断文件是否存在
- 默认变量$0、$1…其中$0代表文件名,也就是说从$1开始是真正的参数。
sh 1.sh 1 2 3 4 5
shift 3
#偏移3个参数,也就是$0,$1,$2三个参数被偏移掉了
- 判断式
if [$a == "a"] && [$b == "b"] || [1]; then
echo "Pass!"
elif []; then
echo "pass1.0"
else
echo "balabala"
fi
- 匹配case in
case $1 in
"hello")
echo "Hello World!"
;;
"")
echo ""
;;
esac
- 函数自定义
function fname(){
}
#调用,至于参数嘛,和上面提到的$0,$1...一致
fname;
- Loop 循环
#第一种
while [条件]
do
echo "我在循环"
done
#第二种,条件成立就停止循环,和while相反
until [条件]
do
echo "我在循环"
done
- For固定循环
#固定循环
for var in con1 con2
do
echo "$var"
done
#输出
# con1 con2
- For数值循环
for ((初始值; 限制值; 执行步长))
do
done
#示例
for ((i=1; i<7; i=i+1 ))
do
done
- 脚本执行追踪
sh [-nvx] script.sh
# -n 不执行脚本,仅仅查询语法的问题
# -v 在执行script之前,将script的内容输出到屏幕上
# -x 将使用的script显示到屏幕上
结束。echo “Commit”