SHELL命令

shell的环境:

在vim编辑文本命令,以#!/bin/bash或#!/bin/env bash开头(其意为解析器)

Linux提供的Shell解析器有
(cat /etc/shells):/bin/sh、/bin/bash、/bin/nologin、/bin/dash、/bin/tcsh、/bin/csh
Centos默认的解析器是bash:echo $SHELL

创建脚本:touch xxx.sh (.sh脚本文件)

查看脚本的执行流程:bash -x xxx.sh #一般使用这个命令查看脚本执行的步骤

查看脚本的语法:bash -n xxx.sh #一般使用这个命令查看脚本语法错误

多行注释:
:<<EOF 
注释
EOF 
或
:<<! 
注释
!

shell的执行

vim xxx.sh
    #!/bin/bash
    echo 'hello world!'
    #单行''注释原样输出;双行""注释先转义后输出.

#将.sh结尾的文件变为可执行文件。
chomd ug+x xxx.sh

执行.sh文件
./xxx.sh
#执行当前目录下的.sh文件
/root/xxx.sh

source xxx.sh和sh xxx.sh
#编译执行

shell中的变量

4.1 系统变量

常用系统变量:$ HOME、$ PWD、$ SHELL、$USER等
查看系统变量的值:echo $HOME
显示当前Shell中所有变量:set

4.2 自定义变量

A. 基本语法

定义变量:变量=值 #只在当前用户/当前会话下有效
撤销变量:unset 变量
声明静态变量:readonly 变量 #注意:静态变量不能unset

B. 变量的定义规则

变量名称由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
等号两边不能有空格
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
变量的值如果有空格,需要使用双引号或单引号括起来

C. 可以把变量提升为全局环境变量,可供其他Shell程序使用

全局环境变量:export 变量名 #只对当前会话的所有用户有效
激活:source /etc/profile

4.3 特殊变量

$n
	
n为数字,$0代表该脚本名称,$1-9 代表第一到第九个参数,十以上的参数需要用大括号包含,如9代表第一到第九个参数,十以上的参数需要用大括号包含,如9代表第一到第九个参数,十以上的参数需要用大括号包含,如{11}。

$#	获取所有输入参数个数,常用于循环

$*	代表命令行中所有参数,$*把所有的参数看成一个整体

$@	代表命令行中所有参数,$@把每个参数区别对待

$?	最后一次执行的命令的返回状态,返回结果:0表示成功,1表示失败

shell数组

#定义:

arr=(value1 value2 value3…)或arr_name[0]=value0…

#读取数组元素值(通过下标)	

${arr[下标]}:

#获取数组中所有元素(使用@或*)	:

${arr_name[*]}

#获取数组的长度(使用#):

${#arr_name[*]}

shell的运算符

#方式1:

$((运算式)) 
$[运算式] 

#+,-,*,/,%

#方式2:

expr +,-,\*,/,% 

#注意:expr运算符间要有空格

#expr一步完成计算:

expr `expr $a + $b` * $b

#采用 $ [运算符]方式:

s= $ [( $ a+$ b)*$b]

shell的条件判断

#比较运算:
num1 = 100
num2 = 200
if test $[num1] -eq $[num2]
then 
    echo  '两个数相等'
else
    echo  '两个数不相等'
fi

SHELL流程控制

if [ 条件判断 ];then
	程序
fi

或者
  
if [ 条件判断式 ]
then
	程序
elif [ 条件判断式 ]
then
	程序
else
	程序
fi

case语句

case  $变量名  in
	“值1”)
		如果变量等于值1,执行程序1
		;;
	“值2”)
		如果变量等于值2,执行程序2
		;;
	…省略其他分支…
	*)
		如果以上都不是,执行此程序
		;;
esac

for循环

1、基本用法

for(( 初始化;循环控制条件;变量变化 ))
do
	程序
done

或者
  
for 变量 in 值1 值2…
do
	程序
done

2、whlie用法

while [ 条件判断式 ]
do
	程序
done

read读取控制台输入

read  -t 7  -p  “请在7秒内输入名称”  NAME

函数

1.0 系统函数

1.1 basename

基本语法:basename [ string / pathname ] [ suffix ]

#basename命令会删除掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来

选项:suffix为后缀,如果suffix被指定,basename会将pathname/string中的suffix去掉

1.2 dirname

基本语法:dirname 文件绝对路径

#从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录的部分)

2.0 自定义函数

[ function ] funname[()]
{
	Action;
	[return int;]
}
funname

总结:

shell的认知,简单来说认识shell就像学习python语言一样,有常量变量,语句,函数等等;作用于壳,对内核实施一系列命令。

Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。 Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值