文章目录

  • 1、安装操作系统
  • 2、Shell变量
  • 3、Shell数值运算
  • 4、运算符
  • 4.1 算术运算符:
  • 4.2 关系运算符:
  • 4.3 布尔运算符:
  • 4.4 逻辑运算符:
  • 4.5 字符串运算符:
  • 4.6 文件测试运算符:
  • 5、shell test 命令
  • 4、IF……ELSE 条件语句
  • 5、 case分支语句
  • 6、循环语句
  • 6.1 for循环
  • 6.2 while
  • 6.3 跳出循环
  • 7、 各种符号说明:
  • 7.1.$()
  • 7.2. $ [] $ (()) :
  • 7.3. [ ]
  • 7.5. (( ))及[[ ]]


1、安装操作系统

安装操作系统

网络配置:

1、修改主机名:/etc/hostname

2、设置静态IP: vim /etc/sysconfig/network-scripts/ifcfg-ens33

ONBOOT改成yes

BOOTPROTO=static

添加如下行:

IPADDR=192.168.182.147

NETMASK=255.255.255.0

GATEWAY=192.168.182.2

DNS1=192.168.182.2

重启网络服务:

3、修改linux域名映射文件 /etc/hosts

192.168.182.147 hdp1

4、修改windows域名映射文件 C:\Windows\System32\drivers\etc\hosts

192.168.182.147 hdp1

2、Shell变量

Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

变量可以分为 用户自定义变量、系统环境变量

  • 定义变量:
    变量名=变量值
    例如:
    x = 5
    name = “xiaoming”(等号左右不能有空格)
  • 变量调用:
    例如:
    echo $x
    echo $name
  • 设置环境变量
    export 变量名=变量值

    变量名=变量值
    export 变量名
  • 查看环境变量
    set
  • 系统环境变量配置文件
    /etc/profile
  • 位置参数变量

3、Shell数值运算

例:

num1=1
num2=2
运算1:sum1=$num1+$num2      打印:echo $sum1 结果:2+3
运算2:sum2=$((num1+num2))   打印:echo $sum2 结果:3
运算3:sum3=$[num1+num2]	打印:echo $sum3 结果:3

运算4:sum4=$(expr $num1 + $num2)   打印:echo $sum4 结果:3
运算5:sum5=`expr $num1 + $num2`     打印:echo $sum5 结果:3
运算6:declare -i sum6=$num1+$num2  打印:echo $sum6 结果:3

$(())
$[]
$(expr )
`expr `

4、运算符

4.1 算术运算符:

下表列出了常用的算术运算符,假定变量 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。

**注意:**条件表达式要放在方括号之间,并且要有空格,例如: [shell 命令 下载 镜像images shell命令安装_字符串b] 是错误的,必须写成 [ $a == $b ]

4.2 关系运算符:

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

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

运算符

说明

举例

-eq

检测两个数是否相等,相等返回 true。

[ $a -eq $b ] 返回 false。

-ne

检测两个数是否不相等,不相等返回 true。

[ $a -ne $b ] 返回 true。

-gt

检测左边的数是否大于右边的,如果是,则返回 true。

[ $a -gt $b ] 返回 false。

-lt

检测左边的数是否小于右边的,如果是,则返回 true。

[ $a -lt $b ] 返回 true。

-ge

检测左边的数是否大于等于右边的,如果是,则返回 true。

[ $a -ge $b ] 返回 false。

-le

检测左边的数是否小于等于右边的,如果是,则返回 true。

[ $a -le $b ] 返回 true。

4.3 布尔运算符:

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

运算符

说明

举例

!

非运算,表达式为 true 则返回 false,否则返回 true。

[ ! false ] 返回 true。

-o

或运算,有一个表达式为 true 则返回 true。

[ $a -lt 20 -o $b -gt 100 ] 返回 true。

-a

与运算,两个表达式都为 true 才返回 true。

[ $a -lt 20 -a $b -gt 100 ] 返回 false。

4.4 逻辑运算符:

以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:

运算符

说明

举例

&&

逻辑的 AND

[[ $a -lt 100 && $b -gt 100 ]] 返回 false

||

逻辑的 OR

[[ $a -lt 100 || $b -gt 100 ]] 返回 true

4.5 字符串运算符:

下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:

运算符

说明

举例

=

检测两个字符串是否相等,相等返回 true。

[ $a = $b ] 返回 false。

!=

检测两个字符串是否相等,不相等返回 true。

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

-z

检测字符串长度是否为0,为0返回 true。

[ -z $a ] 返回 false。

-n

检测字符串长度是否不为 0,不为 0 返回 true。

[ -n “$a” ] 返回 true。

$

检测字符串是否为空,不为空返回 true。

[ $a ] 返回 true。

4.6 文件测试运算符:

文件测试运算符用于检测 Unix 文件的各种属性。

属性检测描述如下:

操作符

说明

举例

-d file

检测文件是否是目录,如果是,则返回 true。

[ -d $file ] 返回 false。

-f file

检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。

[ -f $file ] 返回 true。

-r file

检测文件是否可读,如果是,则返回 true。

[ -r $file ] 返回 true。

-w file

检测文件是否可写,如果是,则返回 true。

[ -w $file ] 返回 true。

-x file

检测文件是否可执行,如果是,则返回 true。

[ -x $file ] 返回 true。

-s file

检测文件是否为空(文件大小是否大于0),不为空返回 true。

[ -s $file ] 返回 true。

-e file

检测文件(包括目录)是否存在,如果是,则返回 true。

[ -e $file ] 返回 true。

5、shell test 命令

Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

实例演示:

num1=100
num2=100
if test $num1 -eq $num2
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

输出结果:

两个数相等!

4、IF……ELSE 条件语句

比较两个数字大小:

写法1:使用[ ],相当于test命令, Test和[]中可用的比较运算符只有=和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式 。 无论是字符串比较还是整数比较都不支持大于号小于号。如果实在想用,对于字符串比较可以使用转义形式,如果比较"ab"和"bc":[ ab < bc ],结果为真,也就是返回状态为0。[ ]中的逻辑与和逻辑或使用-a 和-o 表示。且[]前后都有空格。

a=2
b=3
if [ $a -eq $b ]
then
   echo "a 等于 b"
elif [ $a -gt $b ]
then
   echo "a 大于 b"
else
   echo "a 小于 b"
fi

写法2:使用[[ ]],是[ ]的针对数学比较表达式和字符串表达式的加强版。 &&、||、<和> 等操作符能够正常存在于[[ ]]条件判断结构中 。

#a=$1
#b=$2

read -p "请输入a:" a
read -p "请输入b:" b

if [[ $a == $b ]]
        then echo "a 等于 b" 
elif [[ $a > $b ]]
        then echo "a 大于 b"
else
        echo "a 小于 b"
fi

#打印:a 小于 b

5、 case分支语句

Shell case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

case工作方式如上所示。取值后面必须为单词in,每一模式必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

下面的脚本提示输入1到4,与每一种模式进行匹配:

echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read aNum
case $aNum in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

输入不同的内容,会有不同的结果,例如:

输入 1 到 4 之间的数字:
你输入的数字为:
3
你选择了 3

6、循环语句

6.1 for循环

for循环一般格式为:

for 变量 in 元素1 元素2 ... 元素N
do
    命令1
    命令2
    ...
    命令N
done

例3:顺序输出当前列表中的数字:

#!/bin/bash

for loop in 1 2 3 4 5
do
    echo "The value is: $loop"
done

例4:数字型循环

#!/bin/bash  

sum=0
for((i=1;i<=10;i++))
do
sum=$((sum+i))
done
echo $sum

#倒数第三行可换成((sum++))

例5: 路径查找

#!/bin/bash  
  
for file in /bin/*;  
do  
echo $file is file path \! ;  
done
6.2 while
#!/bin/bash
int=1
while(( $int<=5 ))
do
    echo $int
    ((int++))
done
6.3 跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell使用两个命令来实现该功能:break和continue。

break命令

break命令允许跳出所有循环(终止执行后面的所有循环)。

下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。

#!/bin/sh

NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      break
   fi
   echo "打印$NUM"
done

#以上 `expr $NUM % 2` 可替换为 Q=$[$NUM%2]

执行以上代码,输出结果为:

打印1

continue

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。

对上面的例子进行修改:

#!/bin/sh
NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2` 
   
   if [ $Q -eq 0 ]
   then
      continue
   fi
   echo "打印$NUM"
done

执行以上代码,输出结果为:

打印1
打印3
打印5
打印7

7、 各种符号说明:

7.1.$()

在 bash shell 中,shell 命令 下载 镜像images shell命令安装_运算符_02(uname -r)和version= \uname -r都可以是version得到内核的版本号
各自的优缺点:

  1. \ ` 基本上可用在全部的 unix shell 中使用,若写成 shell script ,其移植性比较高。但反单引号容易打错或看错。
  2. $()并不是所有shell都支持。
echo `date`
echo $(date)
7.2. $ [] $ (()) :

它们是一样的,都是进行数学运算的。但是注意,bash只能作整数运算,对于浮点数是当作字符串处理的。

i=0
echo $((i+1))
echo $[i+1]          

#错误用法
echo $((i++))
7.3. [ ]

即为test命令的另一种形式。
但要注意许多:
1.你必须在左括号的右侧和右括号的左侧各加一个空格,否则会报错。
2.test命令使用标准的数学比较符号来表示字符串的比较,而用文本符号来表示数值的比较。很多人会记反了。使用反了,shell可能得不到正确的结果。
3.大于符号或小于符号必须要转义,否则会被理解成重定向。

num1=100
num2=100
if test $num1 -eq $num2
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi
num1=100
num2=100
if [ $num1 -eq $num2 ] 
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi
7.5. (( ))及[[ ]]

它们分别是[ ]的针对数学比较表达式和字符串表达式的加强版。
其中(( )),不需要再将表达式里面的大小于符号转义,除了可以使用标准的数学运算符外,还增加了以下符号:

shell 命令 下载 镜像images shell命令安装_linux_03

read -p "请输入a:" a
read -p "请输入b:" b

if [[ $a == $b ]]
        then echo "a 等于 b" 
elif [[ $a > $b ]]
        then echo "a 大于 b"
else
        echo "a 小于 b"
fi
read -p "请输入a:" a
read -p "请输入b:" b

if (( $a == $b ))
        then echo "a 等于 b" 
elif (( $a > $b ))
        then echo "a 大于 b"
else
        echo "a 小于 b"
fi
for((i=0;i<10;i++))
do
        echo $i
done