在linux中,默认的解释器是/bin/bash,此外,Linux中的shell还有/bin/sh ; /sbin/nologin ; /bin/dash ; /bin/tcsh ; /bin/csh
一、echo命令
echo是一个linux中的输出命令,常用的两个选项: -n 和 -e
-n : 表示输出之后不换行,直接显示新行的提示符
-e : 表示对于转义字符按对应的方式进行处理。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出,若不加-e ,那么在输出时转义字符会按照普通字符进行处理。
转义字符 含义
\a 发出警告声
\b 删除前一个字符
\c \c后面的字符将不再输出,同一时候,输出完毕后也不换行
\f 换页符,光标停在原来的位置
\n 换行且光标移至行首
\r 回车符
\t 水平制表符,也就是Tab键
\v 垂直制表符
\ 插入\字符
\e Esc键
\0nnn 按照八进制 ASCII 码表输出字符。其中 0 为数字 0,nnn 是三位八进制数
\xhh 按照十六进制 ASCH 码表输出字符。其中 hh 是两位十六进制数
例:1.
\e[1 \e[0m 31m 定义字体颜色是红色。
是标准格式,代表颜色输出开始 代表颜色输出结束
30m=黑色,31m=红色,32m=绿色,33m=黄色,34m=蓝色,35m=洋红,36m=青色,37m=白色
2. echo输出命令打印所有的文件和文件夹(ls命令的替代)
[root@ljp /]# echo *
! bin boot data dev etc home lib lib64 media misc mnt net opt proc root run sbin shel srv sys test.txt tmp usr var
3.echo显示指定格式下的文件
[root@ljp shel]# echo *sh
for1.sh for2.sh fun.sh if.sh read.sh test.sh while.sh wsb.sh
4.显示当前日期
[root@ljp shel]# echo `date`
2022年 07月 14日 星期四 12:27:53 CST
5.echo配合重定向向指定文件写入
[root@ljp /]# echo "12345" >> test.txt
[root@ljp /]# cat test.txt
q q
q q
q q
q q
12345
二、赋值变量
在linux中,声明变量十分简单,甚至不需要声明,直接给一个变量赋值
变量名由字母、数字和下划线组成,但不能是数字开头,环境变量建议大写
A=2
Echo $A
2
#需要注意的是,”=”两边没有空格
#使用export来将变量变为全局变量,
export A
*常用系统变量$HOME,$PWD,$SHELL,$USER
i=22
echo ${i}k
22k
系统变量
$n 表示脚本中的位置变量,$0表示脚本本身
$# 脚本中参数的总数
$@ 脚本中使用参数的集合,将所有参数视为整体
$* 所有参数看成以空格分隔的一个字符串整体
$% 脚本中使用参数的集合,各个参数加上双引号分割成n份的参数
$? 判断上一命令是否成功执行,是则为0,不是则由命令决定具体是哪个数
a=rivers 自定义变量A;
Httpd_sort=httpd-2.4.6-97.tar 自定义变量N_SOFT;
BACK_DIR=/data/backup/ 自定义变量BACK_DIR;
IPaddress=10.0.0.1 自定义变量IP1;
三、运算符
加减乘除取余:+ - \* / %
Expr 3 + 2
5
Expr `expr 3 + 3` \* 2
12
i=$(expr 12 \* 5)
i=$((12 * 5))
i=$[12*5]
let i=12*5
i++ 相当于 i=$[$i + 1]
i-- 相当于 i=$[$i - 1]
i+=2 相当于 i=$[$i + 2]
四、条件判断
条件判断 [ codition ] 两边有空格
-lt less than 小于
-le less equl 小于等于
-eq equl 等于
-ne not equl 不等于
-gt gearter than 大于
-ge Gearter equl 大于等于
#20是否大于10
[ 20 -gt 10 ]
#文件test是否有执行权限
[ -x test ]
#test是否是文件
[ -f test ]
#/test/123是否存在
[ -e /test/123 ]
*结合echo $?查看判断结果(为0表示正确,为其他表示错误)
五、与或
&&如果前一条命令执行成功才执行这之后的命令,||如果前一天命令执行失败,才会之后的命令
例:[ -e test ] && echo exist || echo not exist
Test是否存在,存在输出exist,不存在输出not exist
六、if语句
格式:
If [ 判断 ] ;then | if [ 判断 ] |
程序 | then |
Fi | 程序 |
Fi |
#!/bin/bash #声明所用默认解释器
if [ $1 -eq 1 ];then #如果输入的$1等于1
echo "输入为1" #执行输出输入为1
elif [ $1 -eq 2 ];then #如果输入的$1等于2
echo "输入为2" #执行输出输入为2
elif [ $1 -ne 1 ];then #如果输入的$1不等于1
echo "erro" #执行输出输入为erro
elif [ $1 -ne 2 ];then #如果输入的$1不等于2
echo "erro" #执行输出输入为erro
fi #if语句结束
七、case语句
格式:
Case $n in #如果输入的参数n |
#) #值为# |
命令 #指定相应操作 |
;; #结束 |
Esac #语句结束 |
Case $1 in #如果输入的参数1
1) #值为1
Echo “ddd” #输出ddd
;; #结束
*) #如果是其他值
Echo “erro” #输出erro
;; #结束
Esac #语句结束
八、For语句
格式:
for (( )) #如果没有达到设置的目标,则循环 |
do #做 |
命令 #指定相应操作 |
done #当次循环结束 |
s=0 #给s赋一个值0
for ((i=1;i<=100;i++)) #i=1,如果i小于等于100,则自加1
do
s=$[ $s+$i ] #s的值为变量s+变量i的值
done
echo $s #输出变量s
5050
for i in "***" |
do |
命令 |
done |
for i in "$*" #将所有输入的参数赋值给i
do
echo "$i" #输出所有的输入参数
done
for j in "$@" #将所有的参数作为整体赋值给j
do
echo "$j"
done
for j in "$%" #将所有的参数分别赋值给j
do
echo "$j"
done
九、while语句
格式:
while |
do |
命令 |
done |
s=0 #给s和i分别赋值0和1
i=1
while [ $i -le 100 ] #只要参数i的值小于100
do #执行
s=$[ $s + $i ] #s值为变量s和变量i的和
i=$[ $i + 1 ] #i的值为变量i的值加1
done
echo $s #输出变量s的值
十、自定义函数
可以使用在脚本内定义一个函数的方法来从脚本内使用这个函数
#!/bin/bash
function sum() #脚本内定义一个sum函数{}内为函数方法步骤
{
s=0;
s=$[ $1 + $2 ]
echo $s
}
read -p "输入数字1:" P1 #执行脚本后显示文本信息
read -p "输入数字2:" P2
sum $P1 $P2 #调用函数方法来处理变量P1和P2的值