Shell编程

Shell简介
1.什么是shell脚本?

Linux命令正常情况都是在命令行执行,如果将命令放到一个文件中执行,该文件就是一个shell脚本。从事linux系统工程师岗位,shell编程人员。Shell就是一个普通文本文件,有一大堆的linux命令堆砌而成。一般以.sh为后缀。Shell脚本不需要编译,逐行执行。常见的shell解释器有bash,dash,csh,ksh。Shell脚本可以接受参数的。并且shell语法支持大部分流行编程语言的语法,循环语句,流程控制语句,支持函数。可以理解shell脚本就是一种编程语言。

2.shell脚本的编写,执行和调试

在这里插入图片描述

第一行是指定shell解释器,#!/bin/sh
#是注释,一个作用是描述信息,另外一个作用是注释代码,使某一行代码失效。相当于java中的//
Shell的执行有两种,./name sh name
Shell的调试sh -x name

Shell变量

1.Shell中没有变量的类型,可以认为都是字符串
2.Shell中的变量可以分四大类

  • 本地变量:仅在当前的shell中生效,shell执行完之后失效。
  • 环境变量:在当前shell和子shell都生效(export b),如果在子shell中定义,在父shell无法获取。
  • 位置参数变量:函数或者脚本的参数相关 ¥1表示脚本的第一个参数,$n标识第N个参数
    位置参数的作用:接收脚本的参数,接受函数的参数特殊变量
    shell脚本自带的
  • 特殊变量:shell脚本自带

参数相关
$* 获取所有参数,将所有的参数作为一个字符串。在这里插入图片描述
$#获取参数的个数
在这里插入图片描述
$0获取shell脚本的名字在这里插入图片描述

进程相关
$$ 显示当前shell的进程号
$? 显示上一条命令的返回值
命令和shell的返回值分类
0:正常返回(command not found)0
127:命令不存在 127
126: 没有权限(Permission denied)

Shell中的函数

myfunction(){
  echo "function body"  
  echo $1 $2
  }

带返回值的函数

function add(){   
a=$1   
b=$2   
c=$(($a+$b))   
return $c
}

调用函数

#!/bin/sh
. /home/shell/functions.sh
add 11 33
echo $?

shell脚本中的返回值默认0-255,必须是数字。不建议直接返回计算的数值,将结果在函数内部打印

Shell中的数组

Shell中只有一维数组,数组的下标从0开始。
定义方式
Array_name=(value1 value2...) 注意,值之间的分隔符是空格
取值方式

Array_name[0]=value1

在这里插入图片描述

获取数组的内容
${array_name[*]} *可以换成@
获取数组的长度

${#array_name[*]}

shell脚本修改主机名

update_host_name.sh hostname

方法一:使用写入方式

#!/bin/sh
# this is update hostname
hostname=$1
echo $hostname > /etc/hostname
Reboot

方法二:使用读入方式

#!/bin/sh
# this is update hostname
cat > /etc/hostname <<EOF
server03
EOF
Reboot
posted @ 2022-02-28 17:40  SimoonJia  阅读(28)  评论(0编辑  收藏  举报