bash脚本笔记随记

1.编程语言:机器语言,汇编语言,高级语言

静态语言:编译型语言
        强类型(变量)
        事先转换成可执行格式
        c,c++,java,c#

动态语言:解释型语言
        弱类型
        边解释边执行
        php,shell,python,perl

面向过程:shell,c
面向对象:java,python,perl,c++

变量:内存空间,命令

内存:编址的存储单元


变量类型:事先确定数据的存储格式和长度

条件测试:
     整数测试
     字符测试
     文件测试

条件测试的表达式:
     [ expression ]   
     [[ expression ]]
     test expression 

整数测试:  
    -eq  测试两个整数是否相等;等于为真,不等为假。比如: $A -eq $B
    -ne   测试两个整数是否不等;不等为真,相等为假。
    -gt  测试一个数是否大于一个数;大于为真,否则为假。
    -lt  测试一个数是否小于一个数;小于为真;否则为假。
    -ge  大于或等于
    -le  小于或等于

文件测试:
  -e  FILE  :测试文件是否存在
  -f  FILE  :测试文件是否为普通文件
  -d  FILE  :测试指定路径是否为目录
  -r  FILE  :测试当前用户是否对指定文件有读权限
  -w  FILE  :测试当前用户对文件是否有写权限
  -x  FILE  :测试当前用户对文件是否有执行权限

字符串测试:
      == 或者 = :判断是否相等,相等为真,不等为假 (用的时候等号两边需要打空格,如: [ $A == $B ]
      !=  :判断是否不相等
      >   :
      <   :
      -n string :测试指定字符串是否为空,空为真,不空为假
      -z string :测试指定字符串是否不空,不空为真,空则为假

组合测试条件:
 -a :与关系    eg:  if [ $# -gt 1 -a $# -le 3 ] 参数个数大于1并且小于等于3 ( if [ $# -gt 1 ] && [ $# -le 3 ] )  
 -o :或关系
 !  :非关系


命令间逻辑关系:
     逻辑与:   &&
     逻辑或:   ||



面向过程:(控制结构)
   顺序结构
   选择结构   (if:单分支,双分支,多分支)
   循环结构

条件判断,控制结构:
1.单分支的if语句
if 判断条件; then
     statement1
     statement2 
     ...
fi

2.双分支的if语句:
if  判断条件;  then
    statement1
    ...
else
    statement2
    ...
fi

3.多分支的if语句:
if  判断条件1; then
    statement1
    ...
elif 判断条件2; then
    statement2
    ...
else
    statement3
    ..
fi


case语句:选择结构(双分号结尾)
case  SWITCH in
value1)
    statement
    ...
    ;;
value2)
    statement
    ...
    ;;
...
esac


循环
for
while
until


1.for 变量 in 列表; do
  循环体
done

2.  进入循环:条件满足
while CONDITION; do
        statement
   done

3.进入循环: 条件不满足
until  CONDITION; do
       statement
 done 

4.  for (( expr1 ; expr2 ;  expr3 )) ;do
       循环体
     done 
 

如何生成列表:
  {1..100} :表示1到100
  `seq [起始数   [步进长度] ]  结束数`   eg:  seq 1 3 10

测试脚本是否有语法错误:
bash -n filetest.sh


变量名称:
   1.只能包含字母,数字和下划线,并且不能数字开头,
   2.不应该跟系统中已有的环境变量重名,
   3,最好做到见名知义
  
如果用户存在,就显示用户已存在;否则,就添加此用户
id user && echo "user exists" || useradd user
如果用户不存在,就添加;否则,显示用户已经存在
! id user &&  useradd user  || echo "user exists"
如果用户不存在,添加并且给密码;否则,显示其已经存在;
! id user && useradd user && echo 'user'| passwd --stdin user || echo "user exists"


shell中如何进行算术运算:
1. let 算术表达式
   eg: let C=$A+$B
2. $[算术运算表达式]
   eg: C=$[$A+$B]
3. $((算术运算表达式))
   eg: C=$(($A+$B))
4. expr 算术运算表达式,表达式中各操作数及运算符之间要有空格,而且要使用命令引用
   eg:C=`expr $A +$B`

eg: let I+=1   相当于  let I++ 相当于 let I=$I+1

bc命令:
echo "scale=2;111/22;" |bc
bc <<< "scale=2;111/22;"


2.脚本:命令的堆砌,按实际需要,结合命令流程控制机制实现的源程序。
eg:添加用户,user1,   用户的密码同用户名,而且要求,添加密码完成后不显示passwd命令的执行结果;每个用户添加完成后,都要显示用户某某已经添加成功;
===============
#!/bin/bash
!id user1 &>/dev/null && useradd user1 && echo "user1" | passwd --stdin user1 &>/dev/null && echo "add user1 finished." || echo "user1 exists"

======
#!/bin/bash
NAME=user1
if  id $NAME &>/dev/null ; then
      echo "$NAME exsits;"
else
      useradd $NAME
      echo $NAME | passwd --stdin $NAME &>/dev/null
      echo "add $NAME finished."
fi


3 eg:

#!/bin/bash
#
cat << EOF
d|D) show disk usages.
m|M) show memory usages.
s|S) show swap usages.
*) quit.
EOF

read -p "your choice:" CHOICE
while [ $CHOICE != 'quit' ] ;do
 case $CHOICE in
  d|D) 
      echo "disk usage: "
       df -Ph ;;
  m|M)
      echo "memory usage: "
      free -m | head -2  ;;
  s|S)
      echo "swap usage: "
      free -m | head -1
      free -m | tail -1  ;;
  *) 
       echo "Unknown.." ;;
   esac
read -p "Again,your choice:" CHOICE
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值