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 $?

2.逻辑运算

&& 与

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

|| 或

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

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

3.类型判断

判断输入的是否是个文件

如果1.txt存在就查看

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

如果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"

4.数值判断

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

[ 2 -gt 2 ]
echo $?

[ 2 -ne 1 ]
echo $?

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 $?

6.计算表达式

[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


二、shell数组

1.单行定义

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

2.多行定义

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

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]}

5.基于内容找索引

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

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

不加!可以看内容

6.增删改

获取元素

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]}

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

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

删除数组

unset删除单个数组元素

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

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

删除整个数组

unset 数组名

三、shell高级

1.重定向

>覆盖

>>追加

管道符

netstat -ano | grep 22

2.其他符号

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

3.信息符号

1 表示正确输出的信息

2 表示错误输出的信息

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

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

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

写一个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

/dev/zero #输出无数个0

/dev/null #垃圾桶文件

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

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

4.if语句

#!/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语句

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

7.for语句

遍历文件

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

遍历数组

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

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

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

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

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

10.函数

#!/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


三、核心命令

1.grep命令

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

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

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

2.正则数组

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

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

3.一些常用的命令

alias

unalias

history查看命令输入记录

!行号

使用history里面对应的命令

!!上一次输入的命令

快捷键


结语

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白帽小丑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值