linux脚本基础详解

linux脚本基础详解shell 脚本基础 1 脚本 vim 环境脚本练习 2 shell 脚本中环境的定义方法 3 shell 脚本中的转译字符 4 脚本中变量的数组 5 系统中命令的别名设定 6 脚本中的传参脚本练习 7 脚本中的循环函数脚本练习 1 脚本 vim 环境在脚本中通常要显示一些脚本信息 这些信息可以通过对 vim 设定使其自动出现 etc vimrc 此文件是 vim 的主配置文件 文件内容全局生效 vimrc 此文件是 vim 子文件 在用户家目录中编辑 vim 的配置文件也可以控制 但是只针对当前用户生效 vim vi

1.脚本vim环境

在脚本中通常要显示一些脚本信息,这些信息可以通过对vim设定使其自动出现

/etc/vimrc 此文件是vim的主配置文件,文件内容全局生效
~/.vimrc 此文件是vim子文件,在用户家目录中编辑vim的配置文件也可以控制,但是只针对当前用户生效

 1 set nu ts=2 et ai 2 3 autocmd BufNewFile *.sh,*.script call SHELLTITLE() 4 func SHELLTITLE() 5 call append(0,"#") 6 call append(1,"# Author: lee") 7 call append(2,"# Version: 1.0") 8 call append(3,"# Create_Time: ".strftime("%Y/%m/%d")) 9 call append(4,"# Mail: ") 10 call append(5,"# Info: ") 11 call append(6,"#") 12 call append(7,"#") 13 call append(8,"#") 14 call append(9,"") 15 call append(10,"#!/bin/bash") 16 endfunc 

脚本练习:

1.建立一个ip_show.sh 脚本 ,使得输入网卡后可以显示出该网卡ip,并且要有空输入提示

#!/bin/bash [ -z "$1" ] && { 
    echo "Error : Please input interface following script !!" exit } ifconfig $1 | awk '/\ 
   
     /{print $2}' 
    
#!/bin/bash echo "hostname: `hostname`" echo "ipaddress: `ifconfig ens3 | awk '/\ 
   
     /{print $2}' 
   `" echo "username: $USER" 

!!!注意单引号和反单引号的区别,单引号’’是弱引用,不能引用\ ` $ !; 反单引号“是强引用,可以引用所有

3.建立clear_log.sh 执行脚本可以清空日志

#!/bin/bash [ "$USER" != "root" ] && { 
    echo "Please run $0 with root !!!" exit } [ ! -e "/var/log/messages" ] && { 
    echo "No logfile here !!!" exit } > /var/log/messages && { 
    echo logfile has been cleared !!! exit } 

2.shell脚本中环境的定义方法

环境级别
export a=1
在环境关闭后变量会消失
用户级别
vim ~/.bash_profile 用户环境变量配置文件
export a=1
切换用户后失效
系统级别
vim /etc/profile 主配置文件
export a=2
vim /etc/profile.d/westos.sh 子配置文件
export b=3
此变量设定后系统中的所有用户都可以使用
























vim /etc/profile 系统级环境变量配置文件(一般不再此配置文件编辑信息)

3.shell脚本中的转译字符

转译单个字符: \ 批量转译字符:'' "" '' 单引号是弱引用,不能引用\ ` $ ! `` 反单引号是强引用,可以引用所有 

4.脚本中变量的数组

5.系统中命令的别名设定

6.脚本中的传参

非交互模式:
sh /mnt/test.sh westos linux redhat

交互模式:

read -p 进入交互模式; WORD表示变量

-s 表示隐藏录入的WORD

脚本练习:

写一个可以创建新用户的脚本,并且当用户已经存在时提醒你,不存在时会让你输入新用户的密码

 11 #!/bin/bash 12 [ -z $1 ] && { 
    13 echo "Please input username: !!" 14 exit 15 } 16 id $1 &> /dev/null && { 
    17 echo "$1 is exit !!" 18 }||{ 
    19 useradd $1 &> /dev/null 20 read -p "Please input user's password: " -s PASS 21 echo " " 22 echo $PASS |passwd --stdin $1 &> /dev/null && { 
    23 echo "user is created success !!" 24 } 25 } 

7.脚本中的循环函数

#!/bin/bash ECHO() { 
    [ "$WORD" = "exit" -o "$WORD" = "EXIT" ] && { 
    echo bye exit } read -p "Please input word:" WORD echo $WORD ECHO } ECHO 

脚本练习:

写一个可以检测文件类型的循环脚本,当文件不存在时显示文件不存在,存在时输出文件类型。当输入exit时,输出bye 退出脚本

#!/bin/bash FILE() { 
    [ $1 "$FILENAME" ] && { 
    echo $FILENAME is "$2" echo "" check } } check() { 
    read -p "Please input filename :" FILENAME [ "$FILENAME" = "exit" ] && { 
    echo bye exit } FILE "! -e" "not find" FILE -L "link file" FILE -f "common file" FILE -d "directory" FILE -S "socket" FILE -b "block file" FILE -c "cahr file" check } check 

脚本练习2:
写一个循环创建用户的脚本,如果用户存在,输出信息为用户已存在,如果不存在之间新建立用户,并让输入密码,密码输入时被隐藏,此时显示用户已经创建。并一直提示输入用户名创建下一个用户,直到主动退出

#!/bin/bash Create_user() { 
    read -p "Please input username : " USER echo "" [ "$USER" = "exit" ] && { 
    echo bye exit } id $USER &> /dev/null && { 
    echo "$USER is exit !!" Create_user }||{ 
    useradd $USER read -p "Please input password :" -s PASS echo "" echo $PASS |passwd --stdin $USER &> /dev/null && { 
    echo "" echo $USER is created !! } } Create_user } create_user 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208929.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:26
下一篇 2026年3月19日 上午10:26


相关推荐

  • 基本数据类型与表达式6 – 零基础入门学习Delphi07

    基本数据类型与表达式6 – 零基础入门学习Delphi07

    2021年8月13日
    61
  • 在.NET中利用委托实现窗体间安全通信

    在.NET中利用委托实现窗体间安全通信

    2022年3月8日
    42
  • java实现cs架构_cs模型人物看不见

    java实现cs架构_cs模型人物看不见Java网络编程案例–CS模型的简单实现Java网络编程案例CS模型的简单实现基本概述程序原理图源代码基本概述该程序采用C/S模型,在服务器端简单的建立了一个多线程类,来实现对多个客户端传入的数据进行处理。在客户端行处理类,对数据进行一次解析,再调用各个发送类进行处理。采用固定的命令格式,字符编码格式以及字节流,实现了消息发送,二进制文件和文本文件传送,下载文件的功能。程序原理图源代码:J

    2025年12月6日
    3
  • simulink实现模糊PID控制[通俗易懂]

    simulink实现模糊PID控制[通俗易懂]simulink实现模糊PID控制模糊系统,建立simulink实现主程序设计。

    2022年5月22日
    45
  • ssdp java_SSDP协议 – 实施[通俗易懂]

    ssdp java_SSDP协议 – 实施[通俗易懂]我正在尝试实现SSDP协议,但我不确定它是如何工作的.SSDP通过udp发送数据,这很清楚.如果控制器连接到网络,它可以搜索具有MSEARCH消息的设备,该消息可以发送到多播地址239.255.255.250:1900.每个设备都必须收听此地址并做出响应.但我不知道他们是如何回应的.我在wireshark中看到他们用单播响应,但我不知道如何确定接收响应的端口.编辑–…

    2022年10月11日
    4
  • Java基于Redis实现分布式锁

    Java基于Redis实现分布式锁分布式锁可以基于很多种方式实现 比如 zookeeper redis 不管哪种方式 他的基本原理是不变的 用一个状态值表示锁 对锁的占用和释放通过状态值来标识 一 为什么 Redis 可以方便地实现分布式锁 1 Redis 为单进程单线程模式 采用队列模式将并发访问变成串行访问 且多客户端对 Redis 的连接并不存在竞争关系 2 Redis 的 SETNX 命令可以方便的实现分布式锁 setN

    2026年3月20日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号