shell常见命令

1、什么是Shell

  1. 壳(界面)和核(内核) c语言编写的接口(界面),用户通过shell接口调用内核服务,shell可以实现对用户命令的解释和执行
    a)分为两类:图形界面(GUI:gnome,kde)/命令行界面(cli,bash,sh等)
    b)交互式shell/不交互式shell
    c)常见shell(/etc/shells):unix下默认是sh,linux下默认是bash
  2. shell是一门语言(解释性语言),一方面是命令语言;另一方面是程序设计语言,可以有流程控制,变量等。

2、shell语言基本使用

  • 1)如何书写shell脚本
#!/bin/bash
 # 默认解释器(程序)类型,如果指定解释器,该行不生效
echo "aa"
  • 2)执行
    A 确定解释器执行
    sh脚本/bash脚本
    B 内部命令
    ./sourcre : bash内部命令
    作用: 使Shell读入指定的Shell程序文件并依次执行文件中的所有语句
    C 直接执行文件(确保文件有执行权限)
    绝对路径/相对路径(./文件)
  • 3)注释
    #:代表单行注释
    :<<! 注释
    ! :多行注释

3.shell语法

1)变量
A、内置变量
查看变量: set
输出某个变量: echo P W D / PWD/ PWD/PATH/#SHELL
B、自定义变量
基本语法:变量名=变量值
说明:

  • 1.变量两侧不能有空格

  • 2.值中有空格需要使用引号

  • 3.双引号可以直接引用变量,但是单引号会脱意。

  • 4.获取变量值可以使用${变量名}

  • 其他使用:
    只读变量: readonly 变量名=变量值
    删除变量:unset 变量名
    案例总结:

a.sh
#!/bin/bash
A="A in a.sh"
echo $A
. /root/b.sh
echo $B

b.sh
#!/bin/bash
B="B in b.sh"
echo $B
echo $A

总结:
1、a.sh中直接调用b.sh,会让b.sh在A所在的bash进程的“子进程”空间中执行
2、而子进程空间只能访问父进程中用export定义的变量
3、一个shell进程无法将自己定义的变量提升到父进程空间中去
4、source或者“.”号执行脚本时,会让脚本在调用者所在的shell进程空间中执行

C 方引号赋值
先将结果运算完毕,然后赋值
A=date / A= ( d a t e ) e c h o − e &quot; (date) echo -e &quot; (date)echoe"B"
D 特殊变量

$?:上一次状态码
$$:进程编号
$0:脚本名称
$n:从1开始,参数信息
$#:参数个数
$*/$@:参数列表

4、运算符

1)算术运算符

A.expr运算
B=`expr m + n`
注意:
1.符号两侧必须有空格
2.乘号需要转义
B.(())运算
$((3+2))
C.$[]运算
D.let
[root@hdp1 ~]# let C=A+B
[root@hdp1 ~]# echo $C
25
[root@hdp1 ~]# let C++
[root@hdp1 ~]# echo $C
E.  bc命令
实现浮点数的运算
[root@hdp1 ~]# echo "10/3" | bc
3
[root@hdp1 ~]# echo "scale=2;10/3" | bc
3.33
[root@hdp1 ~]# echo "ibase=8;20" | bc
16
[root@hdp1 ~]# echo "ibase=10;obase=8;20" | bc
24
[root@hdp1 ~]# echo "4^4" | bc
256
[root@hdp1 ~]# echo "2.2>2" | bc
1
[root@hdp1 ~]# echo "2.2<2" | bc 
0

2)三元运算
[ condition ] && 表达式1 || 表达式2
中括号两侧必须有空格

3)比较运算符
数值比较:
-eq /-gt /-lt/-ge/-le/-ne

4)逻辑运算符
!/-a/-o

5)字符串运算符
=/!=

6)文件运算符
-d/-f/-s

5、流程控制

  1. if
if [ condition ]
 then 语句1
elif [ condition ]
  then 语句2
else
  语句3

在这里插入图片描述

  1. case
case 变量 in
值1)
   语句1
   ;;
值2)
   语句 2
   ;;
*)
  语句3
esac

3)while
while []/(())
do
语句
done

i=1
SUM=0
while ((i<=100))
do
 let SUM=SUM+i
 let i++
done
echo $SUM

4)for

1.for 变量 in 参数列表
do
done
2.for 变量 in {1..100}
do
done
3.for((i=0;i<=100;i++))
do
done

5)until

until 条件(())/[]
do
done

6、数组

数组定义: arr=(aa bb)
获取某个元素: ${arr[index]}
设置某个元素: arr[index]=值
获取所有元素: a r r [ ∗ / @ ] 获 取 长 度 : {arr[*/@]} 获取长度: arr[/@]:{#arr[]}
获取下标:${!arr[
]}
连接数组: arr+=(cc dd)
删除元素: unset a r r [ i n d e x ] 分 片 : {arr[index]} 分片: arr[index]:{arr[*]:index:length}
数组遍历:

for i in ${!arr[*]};do echo ${arr[i]};done;
for A in ${arr[*]};do echo $A;done;

7.函数

hello(){
 echo $1
 echo $2
 return 2
}
hello aa bb
echo $?
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值