目录
一、基础
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.一些常用的命令
结语
echo $?为0代表上个语句执行成功
echo $?为1代表上个语句执行失败
test 1 = 1
echo $?
test 1 = 2
echo $?
&& 与
[ 1 = 1 ] && [ 2 = 2 ]
[ 1 = 2 ] && [ 2 = 2 ]
|| 或
[ 1 = 1 ] || [ 2 = 2 ]
echo $?
[ 1 = 2 ] || [ 2 = 2 ]
echo $?
判断输入的是否是个文件
如果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"
[ 2 -eq 1 ]
echo $?
[ 2 -eq 2 ]
echo $?
[ 2 -lt 2 ]
echo $?
[ 2 -gt 2 ]
echo $?
[ 2 -ne 1 ]
echo $?
[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 $?
[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
[root@localhost o]# arr=(1 2 3 4 5 6)
[root@localhost o]# echo $arr
[root@localhost o]# arr2=(
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> )
[root@localhost o]# echo arr2
arr2[2]=10
arr2[3]=10
arr2[4]=10
[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]}
当不知道内容是什么的时候,可以查看所有下标
[root@localhost o]# echo ${!arr[*]}
[root@localhost o]# echo ${!arr[@]}
[root@localhost o]# echo ${!arr2[@]}
不加!可以看内容
获取元素
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 数组名
>覆盖
>>追加
管道符
netstat -ano | grep 22
&就是将一个命令从前台转到后台执行
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 &
#!/bin/bash
if [ $1 == 'nan' ]
then
echo "your sex is man"
fi
#!/bin/bash
if [ $1 == 'nan' ]
then
echo "your sex is man"
else
echo "error!"
fi
~
#!/bin/bash
case "$1" in
"start")
echo "server running start..."
;;
"stop")
echo "server stop..."
;;
"restart")
echo "server restarting..."
;;
*)
echo "*******************"
;;
esac
遍历文件
#!/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
#!/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
还有两个简单的我就不演示了
#!/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
-c 匹配内容 文件名 #计算匹配内容在文件里面有多少次出现
root@ou-virtual-machine:~# grep -c aaaa a.txt
root@ou-virtual-machine:~# cat a.txt
{数组开头..数组结尾..步长}
echo {1..10..2}
echo {001..100..2}
echo {01..100..2}
alias
unalias
history查看命令输入记录
!行号
使用history里面对应的命令
!!上一次输入的命令
快捷键
最近可能比较多的会更新linux和网络相关的博客,希望大家多支持我,多多关注、点赞。