在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.

shell echo如何写入 linux shell echo_赋值

\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的值