shell只是为了保护系统内核从而提供给用户间接操作系统的一个接口。
cat /ets/shells查看系统上shell的种类。不同的shell语法功能会有差异,一般用bash。
在shell脚本中的一行用#!/usr/bin/bash形式声明脚本使用的bash类型,不同os bash路径可能有差异。
bash、绝对路径、相对路径,会以子shell的方式执行脚本,所以变量无法传递到父进程。
source、点执行脚本是在当前进程执行脚本,所以脚本中的变量可以保留。
shell脚本的调试
bash -n只检查语法但不执行;-x将用到的script内容输出到屏幕,类似脚本中的set -x。
脚本中加set -e命令执行错误即终止。
变量注意点:等号两边不能有空格;双引号内容的$等特殊字符保留其原有特点,单引号的特殊字符为普通字符;父进程定义的变量无法在子进程直接 使用,需用export声明;
read -p "等待输入的提示语” yn保存输入结果的变量值
$(($1+$2))实现两个数字相加
$(seq 1 100)生成1到100的序列
条件判断式
只有一个条件
if [ "$1" == "$2" ]; then
elif [ "$1" == "$2" -o "$2"=="$3" ]; then
#多个条件在一个括号中,用-o、-a、!表示逻辑关系
elif [ "$1" == "$2" ] || [ "$2" == "$3" ]; then
#多个条件在多个括号中,用||、&&表示逻辑关系
else
fi
case用法
case $1 in
"hello")
#heihei1
;;
"hello2")
#heihei2
;;
*)
#所有
esac
function函数
function func_name()
{
#$0函数名字
#$1函数第一个参数
}
循环
while [ "$1"=="$2" ]
do
done
until [ "$1"=="$2" ]
do
done
for i in var1 var2
do
done
s=0
for((i=1;i<=100;i++)
do
s=$(($s+$i))
done