#!/bin/bash
注释信息:#
代码注释:
缩进,适度添加空白行
语言:编程语法格式,库,算法和数据结构
编程思想:问题空间–》解空间
变量:
局部变量:
本地变量:当前shell进程
环境变量:当前shell进程及子进程
定义环境变量:export name=value
取消环境变量: unset name
位置参数变量
特殊变量
数据类型: 字符型,数值型
弱类型的语言,所有类型当初字符型
算数运算:
let var=expression
位置变量(内置的):
$1 $2 $3
$@ :所有的参数
$* :所有的参数
$# :参数的个数
$$ :当前进程的ID
$? :上一条命令的执行结果
$! :
read 变量名 变量名: 键盘接受的值赋给变量
read -p "提示“ 变量名 :
变量运算:
349 n=$(expr 1+2)
350 echo $n
351 echo $[1+2]
352 echo $[1+2 ]
353 echo $((2+2))
357 a=1
358 b=2
359 echo $((a+b))
360 echo $[a+b]
361 let 1+3
362 let n=1+3
363 echo $n
测试(判断):
格式1: test 条件表达式
格式2: [ 条件表达式 ] 例如: [ $USER = “root” ]
格式3: [[ 条件表达式 ]] 支持正则
文件测试:
数值比较:
字符串比较:
分支
read -p "input a number:" n
if [ "${n}" -gt 18 ] ;then
echo "可以玩游戏"
elif [ "${n}" -lt 18 ];then
echo "小了"
else
echo "猜对了"
fi
循环
#for循环
for i in $(seq 10)
do
n=$[${i}%2]
if [ "$n" -eq 0 ]; then
echo ${i}
fi
done
while 循环:
while true
do
read -p "输入:" val
if [ ! -z "${val}" ] ;then
if [ "$val" -gt 18 ] ;then
echo "大了"
elif [ "$val" -lt 18 ];then
echo "小了"
else
echo "猜对了"
fi
else
echo "没有输入值"
fi
done
while循环的条件
n=0
while [ "$n" -lt 5 ]
do
echo "ok"
let n=n+1
done
逻辑判断:
read -p ">>:" n
if [ "$n" -le 5 -a "$n" -gt 2 ];then
echo "ok"
else
echo "$n"
fi
for计数循环
for ((var=1;var<=10;var=var+2))
do
echo "-----------"
echo '$var is ' $var
done
例2:
for i in {1..10}
do
echo "start :"$i
if [ $i -eq 5 ]; then
i=1
fi
echo "last:" $i
done
批量创建用户:
while read u
do
id $u 2>/dev/null
if [ $? -ne 0 ];then
useradd $u
echo "用户:$u 存在"
fi
done < add_user.txt
子进程在后台工作
i=1
while [ $i -lt 5 ]
do
let i++
echo "hello"
{
sleep 3
echo "爱 $i 年 "
}&
done
useradd $u
echo "用户:$u 存在"
fi
done < add_user.txt
子进程在后台工作
i=1
while [ $i -lt 5 ]
do
let i++
echo "hello"
{
sleep 3
echo "爱 $i 年 "
}&
done