shell编程

Shell

1.新建一个脚本

新建一个xxx.sh文件

#!/bin/bash脚本标识

1.变量

1.1定义变量

myName=”小白”

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 首个字符必须为字母(a-z,A-Z)。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。

使用变量:$变量名 为了区分,我们可以使用${变量名}

readonly  定义一个只读的变量,不能重新赋值

1.2删除变量

使用 unset 命令可以删除变量。语法:

unset variable_name

变量被删除后不能再次使用。unset 命令不能删除只读变量。

实例

#!/bin/bash

myUrl="http://www.runoob.com"

unset myUrl

echo $myUrl

2.Shell 字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

单引号

str='this is a string'

单引号字符串的限制:

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号

your_name='qinjx'

str="Hello, I know your are "$your_name"! "

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符

3.运算符

下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:

运算符

说明

举例

+

加法

`expr $a + $b` 结果为 30。,可以是数值型字符串

-

减法

`expr $a - $b` 结果为 -10。

*

乘法

`expr $a * $b` 结果为  200。

/

除法

`expr $b / $a` 结果为 2。

%

取余

`expr $b % $a` 结果为 0。

=

赋值

a=$b 将把变量 b 的值赋给 a。

==

相等。用于比较两个数字,相同则返回 true。

[ $a == $b ] 返回 false。

!=

不相等。用于比较两个数字,不相同则返回 true。

[ $a != $b ] 返回 true。

-gt

相当于>

[ $a -gt $b ] 返回 false

-lt

相当于小于

[ $a -gt $b ] 返回 true

!

[ !true ] 返回false

-o

[ true -o false ] 返回true

-a

[ true -o false ] 返回false

注意:条件表达式要放在方括号之间,并且要有空格,例如[$a==$b] 是错误的,必须写成 [ $a == $b ]

运算符除了使用expr还可以通过这种方式

#!bin/bash

a=10

b=20

echo $((($a+$b)*$a))

 

 

#!/bin/bash

a=10

b=20

c=$(($a+$b))

echo $c

((d=$a+$b))

echo $d

f=`expr $a + $b`   (反引号)

echo $f

 

4.for循环

dodone之间的命令称为循环体

举例:

1.第一种

#!bin/bash

for i in {1..10}

do

echo haha

done

2.第二种

for file in `ls /etc`; do

echo $file

done

3.第三种

#!bin/bash

for i in $(ls /test)

do

echo $i

done

4.第四中

#!bin/bash

for((i=0;i<20;i++))

do

echo $i

done

5.自增长

1.第一种

for i in {1..10}

do

echo $i

let "i+=1"

Done

2.第二种

#!/bin/bash

 

for i in {1..10}

do

echo $i

((i++))

done

6.while循环

举例:

#!/bin/bash

sum=1

i=0

while(( i <= 2 ))

do

  let "sum*=10"

  let "i+=1"

done

echo "sum=$sum"

 

7.数组

定义数组

方式1arr=()

方式2: arr=(value1 value2 value3)   (这种方式带值)

注意:往数组里添加值,数组的长度自动增长

获取数组的长度:${#arr[*]}

遍历数组

#!/bin/bash

arr=(value value1 value2)

arr[0]=1

arr[1]=2

arr[2]=3

arr[3]=4

for i in ${arr[*]}; do

echo $i

done

 

8.条件语句

1.if else

#!/bin/bash

a=1

b=2

if [ $a -gt $b ]

then

echo "a大于b"

else

echo "a小于b"

fi

 

2.if elif

#!/bin/bash

if [ 1 -gt 2 ];then

echo "1>2"

elif [ 2 -gt 1 ];then

echo "2>1"

else

echo "什么鬼"

fi

If [ -f ]判断是否是文件

If [ -d ]判断是否是文件夹

9.注释:

单行:#

多行:举例:

#!/bin/bash

:<<!

echo "hehe"

echo "aaaa"

!

echo "haha"

 

#!/bin/bash

: '   (:之间有空格)

echo "hehe"

echo "aaaa"

'

echo "haha"

原文地址:https://www.cnblogs.com/wzlbigdata/p/8392622.html