Shell笔记

来源:互联网 发布:跟易企秀类似的软件 编辑:程序博客网 时间:2024/05/20 23:55

shell:shell是一个内核,是一个拥有很多命令的集合,不需要编译。

bash:bash是shell中的一种。

shell脚本:是一个以.sh结尾的文件。内部是一些shell命令组合,可被执行。

备注使用“#”,后面的内容为备注内容。

变量:变量引用:“$变量名称”,如$PATH、$BASH;

变量赋值:如:age=18,不能有空格,否则会报错。

获取用户输入:“read name”,那么用户的输入将会作为name这个变量的值

打印:echo

提示语: read -p “How old are you:” age  ,-p 意思是提示  

-s是输入密码类型,输入过程不被看见

参数:脚本中传入参数语句:args("$@")  ,执行脚本语句后,接收输入相应的参数

使用参数:${args[1]}、${args[2]}

当脚标为0时,表示执行此脚本的语句,即${args[0]}表示:./xxx.sh

使用参数列表:$@

计算参数个数:$#

if then语句:判断数值型if(( "$args" = 3 )) then ……fi    其中fi表示结束if语句

判断字符串 if[ $args =  "abcd" ]  then……fi

  1. 整数比较符  
  2.   
  3. -eq : (equal to)相等                      例如: if [ "$a" -eq "$b"  ]  
  4. -ne : (not equal to)相等                  例如: if [ "$a" -ne "$b"  ]  
  5. -gt : (greater than)大于                  例如: if [ "$a" -gt "$b"  ]  
  6. -ge : (greater than or equal to)大于或等于      例如: if [ "$a" -ge "$b"  ]  
  7. -lt : (less than)小于                           例如: if [ "$a" -lt "$b"  ]  
  8. -le : (less than or equal to)小于或等于         例如: if [ "$a" -le "$b"  ]  
  9. <    : 小于                                      例如: if (( "$a" < "$b" ))  
  10. <=   : 小于等于                                  例如: if (( "$a" <= "$b" ))  
  11. >    : 大于                                      例如: if (( "$a" > "$b" ))  
  12. >=   : 大于等于                                  例如: if (( "$a" >= "$b" ))  
  13.   
  14. 字符串比较  
  15.   
  16. =   : 等于                                      例如: if [ "$a" = "$b"   ]  
  17. ==  : 等于                                      例如: if [ "$a" == "$b"  ]  
  18. !=  : 不等于                                    例如: if [ "$a" != "$b"  ]  
  19. <    : 小于(ASCII字母顺序)                     例如: if [[ "$a" < "$b" ]]  
  20. >    : 大于(ASCII字母顺序)                     例如: if [[ "$a" > "$b" ]]  
  21. -z  : 字符不为空     

if [ -e $file1 ] 判断文件file1是否存在-d  判断是否为目录-f判断是否为文件-s判断文件是否为空-w判断是否有写入权限

逻辑运算:与&& 或||

第一种写法:if[ $age -gt 10 ] &&[ $age -lt 20 ]    

第二种写法:[ $age -gt 10 -a $age -lt 20 ]

第三种写法:[[ $age -gt 10 && $age -lt 20 ]]

数学运算:bash默认只支持整型计算,不支持浮点型(如要计算可安装bc)

第一种写法:echo $(( num1 + num2 ))

第二种写法:echo $(  expr $num1 + $num2  )   echo $(  expr $num1\* $num2  )   #乘法要转义

case用法: 下面这段代码的意思是获取输入的第一个参数,匹配对应的值给相应的结果

  1. #! /bin/bash  
  2.   
  3.   
  4. sex=$1  
  5.   
  6. case $score in   
  7.     "man")  
  8.         echo "you are a man" ;;  
  9.     "woman")  
  10.         echo "you are a woman" ;;  
  11.     * )   
  12.         echo "Default,not a human" ;;  
  13. esac  

数组:

  1. #! /bin/bash  
  2.   
  3. os=('linux' 'unix' 'windows' 'Mac')  
  4. os[4]='Android' # add a element  
  5. #unset os[1]    # remove a element  
  6. echo "${os[@]}"  #print all
  7. echo "${os[1]}"  #print unix
  8. echo "${!os[@]}"  #print 0 1 2 3 4
  9. echo "${#os[@]}"  #print count,5

while循环:   中间可插入一行sleep 1 表示暂停一秒

  1. #! /bin/bash  
  2. n=1  
  3. sum=0
  4. while (( $n <= 10 ))  
  5. do  
  6.     sum=$((n + sum ))  
  7.     (( n++ ))  
  8. done
for循环:

  1. =============复制于网络=========================  
  2. for VARIABLE in 12345...N  
  3. do  
  4.     command1  
  5.     command2  
  6.     commandN  
  7. done  
  8.   
  9. OR=======================================  
  10. for VARIABLE in file1 file2 file3  
  11. do  
  12.     command1 on $VARIABLE  
  13.     command2  
  14.     commandN  
  15. done  
  16.   
  17. OR=======================================  
  18. for OUTPUT in $(Linux or unix commond here)  
  19. do  
  20.     command1 on $OUTPUT  
  21.     command2 on $OUTPUT  
  22.     commandN  
  23. done  
  24.   
  25. OR=======================================  
  26. for (( 表达式1; 表达式2; 表达式3 ))  
  27. do  
  28.     command1  
  29.     command2  
  30.     commandN  
  31. done  
  32.   
  33. =======================================  

for循环执行命令:


#! /bin/bashfor command in ls pwd datedoecho"-----------$command----------"$commanddone