Linux(23)—— shell 脚本

本文详细介绍了Linux中bash shell脚本的创建与运行,包括通过vim配置文件自动生成脚本模板,以及使用sh和source命令执行脚本。此外,还讲解了shell脚本中的变量定义、命名规则、数组操作以及环境变量设置。同时,文章提到了命令别名、参数传递和脚本函数的使用方法,并给出了创建用户和清空日志的脚本示例。
摘要由CSDN通过智能技术生成

Linux(23)—— shell 脚本

  这几章笔记是针对redhat8系统中bash的操作指令做记录。

1. shell 脚本建立与运行

  shell是脚本中命令的解释器,而脚本可以记录命令执行的过程和执行逻辑,以便以后重复执行,并且可以批量定时执行。

  • 建立
    在用户级的vim配置文件中添加编写脚本自动定义的部分内容。按下F4唤起Func函数添加内容,新建文件自动添加内容。

     "map <F4> ms:call FUNC()<cr>'s    
     autocmd BufNewFile *.sh,*.script call FUNC()
     func FUNC()
      call append(0,"###############################################")
      call append(1,"# Author: xxx")
      call append(2,"# Create_Time: ".strftime("%Y/%m/%d"))
      call append(3,"")
      call append(4,"################################################")
      call append(5,"")
      call append(6,"#!/bin/bash")
     endfunc
     setlocal ts=2 sw=2 et ai
    
  • 运行

     sh script.sh		#开启指定解释器运行脚本 (新开)
     
     source script.sh	#在当前shell环境下直接运行脚本
     . script.sh
    
     chmod +x script.sh
     /mnt/script.sh		#开启脚本指定的环境,运行脚本 (新开)
     ./script.sh
    
[root@rhserver Desktop]#sh -x script.sh #逐行运行调试脚本

编写脚本实现host_messages.sh 显示当前主机的名称,ip登陆当前主机的用户:

#!/bin/bash
echo  "hostname:   `hostname`
ipaddress:  `ifconfig ens160 | awk '/inet\>/{print $2}'`
username:   $USER"

在这里插入图片描述

编写脚本实现清空日志:

#!/bin/bash
[ $USER != "root" ] && {
  echo "Permission denied!"
}||{
  >/var/log/message
  echo "log is cleared!"
}

在这里插入图片描述

2. shell 中的变量

  变量就是内存一片区域的地址,而用命令无法操作一直变化的目标,因此可以用一串固定的字符(变量)来表示不固定的目标数据。

  • 命名规则
    变量可以包含字母、下划线以及数字。
    但是不能以数字开头。通常短变量名使用全大写字符,变量名较长使用_区分子类如Func_Show2.
  • 常规变量的定义
a=1				#单个变量
b=(1 2 3 4 5)	#数组
	# 访问单个变量
	echo $ab
	echo ${a}b

	# 访问数组中的变量
	a$[a[@]:起始元素id:元素个数]
	
	 ${a[0]}			#第一个元素
	 ${a[-1]} 			#最后一个元素
	 ${a[*]}			#数组中所有元素
	 ${a[@]} 			#数组中所有元素
	 ${a[@]:0:3}		#数组中前三个元素
	 ${a[@]:1:3}		#数组中从第二个开始三个元素
	 ${#a[@]}			#数组中元素的个数
	
	unset a[n] 				#删除数组中的第n个元素
	unset a					#删除a这个数组

注:数组中删除元素仅清空元素的值,元素顺序不会发生改变,被删除元素对应空值。

  • 全局变量的定义

     #当前环境
     export x=1 #在关闭当前shell后失效(source以及 . 方式运行生效)
      
     # 用户级别
     vim ~/.bash_profile
     export x=1
     
     # 系统级别
     vim /etc/profile
     export x=1
     # 系统级别一般采用
     vim /etc/profile.d/xxx.sh
     export x=1
    

在这里插入图片描述

  • 变量的转义
符号效果
\转义单个字符
" "弱引用,批量转义字符 不能转义 \ $ !
’ ’强引用

在这里插入图片描述

  • 命令的别名

      # 当前环境
      alias edit='vim' #在关闭当前shell后失效
       
      # 用户级别
      vim ~/.bash_bashrc
      alias edit='vim' 
      
      # 系统级别
      vim /etc/bashrc 
      alias edit='vim' 
    
      # 删除当前环境中的alias设定
      unalias edit
    

在这里插入图片描述

  • 环境变量

      # 用户级别	添加/mnt
      vim ~/.bash_profile
      export PATH=$PATH:/mnt
      
      # 系统级别   添加/mnt
      vim /etc/bash_profile
      export PATH=$PATH:/mnt
    
  • 参数传递
    命令中参数传递:

      $()优先运行内容,并且运行结果可以传递
      HOST= $(hostname)
    

    脚本中的传参,非交互式

      $0  	# 脚本本身
      $1 	# 脚本后所输入的第一串字符
      $2 
      $3 
      $*  	# 脚本后所输入的所有字符 ( 所有字符串拼接为一个完整 )
      $@ 	# 脚本后所输入的所有字符( 单个字符串, 不拼接 )
      $#    # 3所有脚本后输入的字符个数
    

    脚本中的传参,交互式

      read HOST								#对HOST赋值
      read -p "please input word:"  HOST		#输出提示语,并给HOST赋值
      read -p "please input word:"  HOST	-s 	#隐藏输入内容
    
  • 脚本函数
    定义:

      WORD()
      {
      action1
      action2
      }
    

    调用:

      WORD   #不带括号,代表action1,action2
    

练习 create_user.sh

	Please input username: username
	username exist<output>> usernameis exist>Please input username:
	username not exist please input password: 无回显密码
	此用户会自动建立并且密码为提示后设定的密码
	并显示:username is created
	并再次提示Please input username: 当Please input username:exit
	此脚本推出
#!/bin/bash
Adduser(){
  read -p "Please input username:" ID
  [ "$ID" = "exit" -o "$ID" = "EXIT" ] &&{
    echo "Bye"
    exit
  }
  id $ID &> /dev/null &&{
    echo "$ID is exist!"
    Adduser
  }||{
    read -p "$ID not exist please input password:" -s Passwd
    useradd $ID
    echo $Passwd | passwd --stdin $ID &> /dev/null
    echo -e "\n$ID is created "
    Adduser
  }
}
Adduser

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值