smallmars

一、简介

机器语言
汇编语言
高级语言
面向过程 C Shell Perl
面向对象 java python c++

强语言:先编译再执行 java c++
弱语言:边编译边执行 shell python php

魔数(magic number)
shebang 程序入口 必须放在第一行
#!/bin/bash
#
echo "hello,world."

写完一个脚本,如何执行获得结果?
①bash Script-file
②source Script-file = . Sicript-filecript-file
③chmod +x Script-file; ./Script-file

bash -x 看脚本执行的过程

 

二、变量

1、定义:

变量名=变量值
在内存中申请一个空间,取名叫“变量名”;然后将变量值存入该内存空间
一般情况下,一个变量只能存储一个变量值

2、分类

根据使用的范围,可以分为:
环境变量:能够在当前shell及其子shell中生效的变量
本地变量:只能在当前shell中生效的变量
局部变量:只能在当前的程序段中生效的变量
位置变量:$0, $1, $2, ...
特殊变量:$?, $$, $*, ...

定义环境变量:
1.export 变量名=变量值
2.declare -x 变量名=变量值
3.变量名=变量值 export 变量名

定义本地变量:
变量名=变量值

定义局部变量:
local 变量名=变量值

 

4、获得变量值的方法

echo ${变量名}

ANIMAL=pig

there are 3 ${ANIMAL}s

 

3、变量名的命名规则

1.只能是字母或下划线开头,并且整个名字只能包括字母、数字、下划线
2.变量名严格区分大小写
3.新设置的变量名不要跟已经存在并生效的变量名重复
4.定义新的变量名的时候,最好做到见名知义

 

4、位置变量

$1,$2,$3,...

shift 
与位置有关的几个特殊变量
$#:参数总数
$*,$@:列表显示所有参数 

 

三、测试语句test

  • 条件测试语句

test Condition
[ Condition ]
[[ Condition ]]

  • 整数测试

-eq:等于
-ge:大于等于
-gt:大于
-le:小于等于
-lt:小于
-ne:不等于

  • 字符串测试

-n 不为空
-z 为空
=、==:字符串的内容是否相同
!=:字符串的内容是否不同

[ $A != $B ]

  • 文件状态测试

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

 

四、算术运算

shell中的算术运算 + - * / %(模运算)
A=2
B=3

1.let C=$A+$B
echo $C

2.C=$[$A+$B] C=$[$A**$B] 2的三次方

3.C=$(($A+$B))

4.C=`expr $A + $B`

自身加一
let A++
let A+=1

 

四、脚本的控制结构

顺序结构:shell脚本执行的默认结构
分支机构:也叫条件选择结构,只有符合条件的命令才会被执行
循环结构:在符合条件的情况下重复执行某些命令

  • if条件分支结构

1.单分支结构(只处理条件为真的时候的命令语句)
if condition;
then
statement1
......
fi


2.双分支结构(不管条件为真为假,都有命令要被处理)
if condition;then
statement1
......
else
statement1
fi


3.多分支结构
if condition;then
statement1
......
elif condition2;then
statement2
......
else
statement1
fi

exit #
在执行脚本的过程中遇到exit命令,不再执行后面的其他命令,直接推出脚本。在退出脚本之后,返回执行状态返回值为#。0~127(3~126 )

 

  • 循环结构

1.for循环:
for 变量名 in 变量值列表;do
循环体(一组重复执行的语句)
done

 

  • 变量值列表

  1.一组整数:
    ①{1..100} 从1到100
    ②seq 1 100  从1到100
    ③seq 1 2 10  # 1 3 5 7 9
  2.`cut -d: -f 1 /etc/passwd    

SUM=0  
for I in {1..100};do 
 let SUM+=$I
done
echo #SUM

for ((I=1;I<100;I+=1));do

 

分类:

linux

技术点:

相关文章: