linux基础 - SHELL1

目录

一、基础

1.test测试语句

2.逻辑运算

3.类型判断

4.数值判断

5.字符串比较

6.计算表达式

二、shell数组

1.单行定义

2.多行定义

3.单元素定义

4.查看元素

5.基于内容找索引

6.增删改

三、shell高级

1.重定向

2.其他符号

3.信息符号

4.if语句

5.else

6.case语句

7.for语句

8.while语句

10.函数

三、核心命令

1.grep命令

2.正则数组

3.一些常用的命令

结语


一、基础

1.test测试语句

echo $?为0代表上个语句执行成功

echo $?为1代表上个语句执行失败

test 1 = 1
echo $?

test 1 = 2
echo $?

linux基础 - SHELL1_第1张图片

2.逻辑运算

&& 与

[ 1 = 1 ] && [ 2 = 2 ] 
[ 1 = 2 ] && [ 2 = 2 ] 

linux基础 - SHELL1_第2张图片

|| 或

[ 1 = 1 ] || [ 2 = 2 ] 
echo $?

[ 1 = 2 ] || [ 2 = 2 ] 
echo $?

linux基础 - SHELL1_第3张图片

3.类型判断

判断输入的是否是个文件

如果1.txt存在就查看

[ -f 1.txt ] && cat 1.txt

linux基础 - SHELL1_第4张图片

如果o目录存在就进入并输出里面存在的文件

[ -d o ] && cd o && ls -l

判断输入内容是否可以执行

[root@localhost o]# [ -x 1.txt ] && echo "can excute"
[root@localhost o]# chmod 777 1.txt
[root@localhost o]# [ -x 1.txt ] && echo "can excute"

linux基础 - SHELL1_第5张图片

4.数值判断

[ 2 -eq 1 ]
echo $?
[ 2 -eq 2 ]
echo $?
[ 2 -lt 2 ]
echo $?

[ 2 -gt 2 ]
echo $?

[ 2 -ne 1 ]
echo $?

linux基础 - SHELL1_第6张图片

5.字符串比较

[root@localhost o]# str2="asdqewqr"
[root@localhost o]# str1="asdsad"
[root@localhost o]# [ str1 == str2 ]
[root@localhost o]# echo $?

[root@localhost o]# [ str1 != str2 ]
[root@localhost o]# echo $?

linux基础 - SHELL1_第7张图片

6.计算表达式

linux基础 - SHELL1_第8张图片

[root@localhost o]# echo $((1+3))


[root@localhost o]# echo $((1+3))

[root@localhost o]# a=$((1+3))
[root@localhost o]# echo a
[root@localhost o]# echo $a

[root@localhost o]# echo $((a*3))

[root@localhost o]# echo let a

[root@localhost o]# echo let a*2

[root@localhost o]# let a = a*2
[root@localhost o]# let a=a*2
[root@localhost o]# echo $a

linux基础 - SHELL1_第9张图片


二、shell数组

linux基础 - SHELL1_第10张图片

1.单行定义

[root@localhost o]# arr=(1 2 3 4 5 6) 
[root@localhost o]# echo $arr

linux基础 - SHELL1_第11张图片

2.多行定义

[root@localhost o]# arr2=( 
> 1 
> 2 
> 3 
> 4 
> 5 
> 6 
> 7 
> ) 
[root@localhost o]# echo arr2

linux基础 - SHELL1_第12张图片

3.单元素定义

arr2[2]=10
arr2[3]=10
arr2[4]=10

4.查看元素

[root@localhost o]# echo ${arr2[2]}
[root@localhost o]# echo ${arr2[3]}
[root@localhost o]# echo ${arr2[4]}
[root@localhost o]# echo ${arr1[4]}
[root@localhost o]# echo ${arr1[1]} 
[root@localhost o]# echo ${arr[1]}

linux基础 - SHELL1_第13张图片

5.基于内容找索引

当不知道内容是什么的时候,可以查看所有下标

[root@localhost o]# echo ${!arr[*]}
[root@localhost o]# echo ${!arr[@]}
[root@localhost o]# echo ${!arr2[@]}

linux基础 - SHELL1_第14张图片

不加!可以看内容

linux基础 - SHELL1_第15张图片

6.增删改

获取元素

linux基础 - SHELL1_第16张图片

root@ou-virtual-machine:~# arr=(10000 200000 30000 40000 500000 600000) 
root@ou-virtual-machine:~# echo ${arr[0]:0:2}

root@ou-virtual-machine:~# echo ${arr[3]:0:2}

root@ou-virtual-machine:~# echo ${arr[3]:0:4}

更改元素

root@ou-virtual-machine:~# echo ${arr[3]}

root@ou-virtual-machine:~# arr[3]=900000
root@ou-virtual-machine:~# echo ${arr[3]}

linux基础 - SHELL1_第17张图片

linux基础 - SHELL1_第18张图片

root@ou-virtual-machine:~# echo ${arr[3]}

root@ou-virtual-machine:~# arr[3]=900000
root@ou-virtual-machine:~# echo ${arr[3]}

linux基础 - SHELL1_第19张图片

删除数组

unset删除单个数组元素

root@ou-virtual-machine:~# echo ${arr[*]}

root@ou-virtual-machine:~# unset arr[1]
root@ou-virtual-machine:~# echo ${arr[*]}

linux基础 - SHELL1_第20张图片

删除整个数组

unset 数组名

linux基础 - SHELL1_第21张图片

三、shell高级

1.重定向

>覆盖

linux基础 - SHELL1_第22张图片

>>追加

linux基础 - SHELL1_第23张图片

管道符

linux基础 - SHELL1_第24张图片

netstat -ano | grep 22

linux基础 - SHELL1_第25张图片

2.其他符号

&就是将一个命令从前台转到后台执行

linux基础 - SHELL1_第26张图片

3.信息符号

1 表示正确输出的信息

2 表示错误输出的信息

2>&1表示所有输出的信息

root@ou-virtual-machine:~# cat a.txt 1>> zhengque.txt
root@ou-virtual-machine:~# cat zhengque.txt 

linux基础 - SHELL1_第27张图片

root@ou-virtual-machine:~# asdasfad 2>> errfile.txt
root@ou-virtual-machine:~# cat errfile.txt 

linux基础 - SHELL1_第28张图片

写一个shell文件里面有正确的shell语句和错误的

root@ou-virtual-machine:~# bash shell.exe 1>zhengque.txt 2>cuowu.txt
root@ou-virtual-machine:~# cat zhengque.txt 
asdsad
root@ou-virtual-machine:~# cat cuowu.txt 
shell.exe: line 3: asdlkalsf: command not found

linux基础 - SHELL1_第29张图片

/dev/zero #输出无数个0

/dev/null #垃圾桶文件

所有信息进入垃圾桶文件,所有进程后台运行

cat cuowu.txt >> /dev/null 2>&1 &

4.if语句

linux基础 - SHELL1_第30张图片

#!/bin/bash
if [ $1 == 'nan' ]
then
    echo "your sex is man"
fi

5.else

#!/bin/bash
if [ $1 == 'nan' ]
then
    echo "your sex is man"
else
    echo "error!"
fi
~      

6.case语句

linux基础 - SHELL1_第31张图片

#!/bin/bash
case "$1" in
        "start")
                echo "server running start..."
                ;;
        "stop") 
                echo "server stop..."
                ;;
        "restart")
                echo "server restarting..."
                ;;
        *)      
                echo "*******************"
                ;;
esac            
               

linux基础 - SHELL1_第32张图片

7.for语句

linux基础 - SHELL1_第33张图片

遍历文件

#!/bin/bash
for i in $(ls /root)
do
        echo "${i}"
done

linux基础 - SHELL1_第34张图片

遍历数组

#!/bin/bash
arr=(1 2 3 11 421 1424124123 13213 1231 2312 412 11111)
for i in ${arr[*]}
do
        echo "${i}"
done

linux基础 - SHELL1_第35张图片

8.while语句

#!/bin/bash
arr=(1 2 3 11 421 1424124123 13213 1231 2312 412 11111)
a=0
while [ ${a} -lt 11 ]
do
        echo "${arr[${a}]}"
        a=$((${a} + 1))
done

linux基础 - SHELL1_第36张图片

9.break语句

#!/bin/bash
arr=(1 2 3 11 421 1424124123 13213 1231 2312 412 11111)
a=0
while [ ${a} -lt 11 ]
do
        echo "${arr[${a}]}"
        read num
        if [ $num == 'a' ]
        then
                break
        fi
        a=$((${a} + 1))
done

linux基础 - SHELL1_第37张图片

break n 跳出第n个循环(由内向外)

#!/bin/bash
for var1 in {1..5}
do
        for var2 in {10..14}
        do
                if [ $var1 -eq 2 ] && [ $var2 -eq 10 ]
                then
                        break 2
                else
                        echo "$var1 $var2"
                fi
        done
done

linux基础 - SHELL1_第38张图片

还有两个简单的我就不演示了

10.函数

linux基础 - SHELL1_第39张图片

#!/bin/bash

#define a function
hanshu(){
        echo "hello i am a func!"
}

#use function
hanshu

简单传参

#!/bin/bash

#define a function
hanshu(){
        n=$1
        echo "hello i am a func! ${n}"
}

#use function
hanshu aaa
hanshu bbb
hanshu ou

linux基础 - SHELL1_第40张图片


三、核心命令

1.grep命令

linux基础 - SHELL1_第41张图片

-c 匹配内容 文件名 #计算匹配内容在文件里面有多少次出现

root@ou-virtual-machine:~# grep -c aaaa a.txt 

root@ou-virtual-machine:~# cat a.txt 

linux基础 - SHELL1_第42张图片

2.正则数组

{数组开头..数组结尾..步长}

echo {1..10..2}
echo {001..100..2}
echo {01..100..2}

linux基础 - SHELL1_第43张图片

3.一些常用的命令

alias

linux基础 - SHELL1_第44张图片

unalias

linux基础 - SHELL1_第45张图片

history查看命令输入记录

linux基础 - SHELL1_第46张图片

!行号

使用history里面对应的命令

linux基础 - SHELL1_第47张图片

!!上一次输入的命令

快捷键

linux基础 - SHELL1_第48张图片


结语

最近可能比较多的会更新linux和网络相关的博客,希望大家多支持我,多多关注、点赞。

你可能感兴趣的:(服务器运维,Linux服务器方向,linux,服务器,运维,shell,自动化)