目录
一、基础
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和网络相关的博客,希望大家多支持我,多多关注、点赞。