bash脚本练习

注:以下脚本练习实验都是以root用户身份执行的,若普通用户运行需要另加相应的权限

1、编写脚本/root/bin/systeminfo.sh,显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。

[[email protected] bin]# vim systeminfo.sh
[[email protected] bin]# chmod u+x systeminfo.sh
[[email protected] bin]# cat systeminfo.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:显示当前主机系统信息,包括主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小
HostName=`hostname`
IpAddr=`ifconfig | grep netask && ifconfig | grep Mask || ifconfig | grep Mask | tr -s ‘ ‘|cut -d‘ ‘ -f3|cut -d‘:‘ -f2 | grep -v ‘127.0.0.1‘ | tr ‘\n‘ ‘ ‘ && ifconfig | grep netmask | tr -s ‘ ‘|cut -d‘ ‘ -f3 | grep -v ‘127.0.0.1‘|tr ‘\n‘ ‘ ‘`
Version=`cat /etc/centos-release`
Kernel=`uname -r`
CPU=` lscpu | grep "Model name"|tr -s ‘ ‘|cut -d: -f2`
Mem=`free -h|grep ‘Mem‘|tr -s ‘ ‘|cut -d: -f2|cut -d‘ ‘ -f2`
Disk=`fdisk -l|sed -n ‘2p‘|cut -d: -f2`
echo -e "\033[31;1mHostName\033[0m:\033[32;1m$HostName\033[0m"
echo -e "\033[31;1mIPv4Addr\033[0m:\033[32;1m$IpAddr\033[0m"
echo -e "\033[31;1mOS Version\033[0m:\033[32;1m$Version\033[0m"
echo -e "\033[31;1mKernel\033[0m:\033[32;1m$Kernel\033[0m"
echo -e "\033[31;1mCPU model name\033[0m:\033[32;1m$CPU\033[0m"
echo -e "\033[31;1mMemory\033[0m:\033[32;1m$Mem\033[0m"
echo -e "\033[31;1mDisk\033[0m:\033[32;1m$Disk\033[0m"

2、编写脚本/root/bin/backup.sh,可实现每日将/etc/目录备份到/root/etcYYYY-mm-dd中

[[email protected] bin]# vim backup.sh
[[email protected] bin]# chmod u+x backup.sh 
[[email protected] bin]# cat backup.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:每日将/etc/目录备份到/root/etcYYYY-mm-dd中
BackDir="/root/etc`date +%F`"
SourceDir="/etc"
echo "正在备份/etc目录下的文件,请等待..."
cp -a "${SourceDir}"/. "${BackDir}"
SFile="/root/.sfile`date +%F`"
BackFile="/root/.backfile`date +%F`"
echo "正在检测备份文件,请等待..."
[[ -d "${BackDir}" ]] && ls -aR ${BackDir} > ${BackFile} && sed -i ‘[email protected]‘${BackDir}‘@/[email protected]‘ "${BackFile}" && ls -aR ${SourceDir} > ${SFile} && [[ "`cat ${BackFile}`" == "`cat ${SFile}`" ]] && echo "备份成功" || echo -e "\033[31;1m备份失败,请重新备份\033[0m" && rm -f {${SFile},${BackFile}}

注:脚本中验证备份文件功能只是为了练习,实际上没有多大意义

3、编写脚本/root/bin/disk.sh,显示当前硬盘分区中空间利用率最大的值及分区

[[email protected] bin]# vim disk.sh
[[email protected] bin]# chmod u+x disk.sh 
[[email protected] bin]# cat disk.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:显示当前硬盘分区中空间利用率最大的值及分区
MaxNum=`df|grep "^/dev/sd"|tr -s ‘ ‘|cut -d‘ ‘ -f5|tr -d ‘%‘|sort -nr|head -1`
Partition=`df|tr -s ‘ ‘|cut -d‘ ‘ -f1,5|grep "${MaxNum}"|cut -d‘ ‘ -f1|tr ‘\n‘ ‘ ‘`
echo -e "\033[31;1m当前硬盘分区中空间利用率最大值为\033[0m:\033[32;1m${MaxNum}%\033[0m"
echo -e "\033[31;1m当前硬盘分区中空间利用率最大的分区为\033[0m:\033[32;1m${Partition}\033[0m"

4、编写脚本/root/bin/links.sh,显示正连接本主机的每个远程主机的IPv4地址和连接数,并按连接数从大到小排序

[[email protected] bin]# vim links.sh
[[email protected] bin]# chmod u+x links.sh
[[email protected] bin]# cat links.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:显示连接当前主机的每个远程主机IPv4地址及连接数,并按连接数从大到小排序
echo -e "\t连接数\t远程主机"
netstat -nt|grep ‘tcp‘|tr -s ‘ ‘|cut -d‘ ‘ -f5|cut -d: -f1|uniq -c|tr -s ‘ ‘|sort -nr|tr ‘ ‘ ‘\t‘

5、写一个脚本/root/bin/sumid.sh,计算/etc/passwd文件中的第10个用户和第20用户的ID之和

[[email protected] bin]# vim sumid.sh
[[email protected] bin]# chmod u+x sumid.sh
[[email protected] bin]# cat sumid.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:计算/etc/passwd文件中的第10个用户和第20用户的ID之和
Uid10th=` sed -n ‘10p‘ /etc/passwd|cut -d: -f3`
Uid20th=` sed -n ‘20p‘ /etc/passwd|cut -d: -f3`
SumUid=$[Uid10th+Uid20th]
echo -e "/etc/passwd文件中的第10个用户和第20个用户的ID之和为:\033[32;1m$SumUid\033[0m"

6、写一个脚本/root/bin/sumspace.sh,传递两个文件路径作为参数给脚本,计算这两个文件中所有空白行之和

[[email protected] bin]# vim sumspace.sh 
[[email protected] bin]# chmod u+x sumspace.sh
[[email protected] bin]# cat sumspace.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:传递两个文件路径作为参数给脚本,计算出两个文件中所有空白行之和

#判断是否输入两个参数,否则退出并提示
[[  "$#" -ge 2 ]] || echo -e "\033[31;1m请输入两个文件路径作为参数\033[0m"
[[  "$#" -ge 2 ]] || exit
#判断参数1是否为文件路径,否则退出并提示
[[ -f "$1" ]] || echo -e "\033[31;1m第一个输入的文件路径${1}不存在,请重新输入一个正确的文件路径作为参数\033[0m"
[[ -f "$1" ]] || exit
#判断参数2是否为文件路径,否则退出并提示
[[ -f "$2" ]] || echo -e "\033[31;1m第二个输入的文件路径${2}不存在,请重新输入一个正确的文件路径作为参数\033[0m"
[[ -f "$2" ]] || exit
#分别定义两个变量记录文件1和文件2中空白行的个数
File1Num=`grep ‘^$‘ $1| wc -l`
File2Num=`grep ‘^$‘ $2| wc -l`
#计算文件1和文件2中空白行个数之和
let Sum=${File1Num}+${File2Num}
#输出文件1和文件2中空白行个数之和
echo -e "\033[33;1m$1和$2中所用空白行之和为\033[0m:\033[32;1m${Sum}\033[0m"

7、写一个脚本/root/bin/sumfile.sh,统计/etc, /var, /usr目录中共有多少个一级子目录和文件

[[email protected] bin]# vim sumfile.sh
[[email protected] bin]# chmod u+x sumfile.sh
[[email protected] bin]# cat sumfile.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:统计/etc, /var, /usr目录中共有多少个一级子目录和文件
EtcNum=`ls -A /etc/|wc -l`
VarNum=`ls -A /var/|wc -l`
UsrNum=`ls -A /usr/|wc -l`
Sum=$((EtcNum+VarNum+UsrNum))
echo -e "\033[31;1m/etc,/var,/usr目录中的一级子目录和文件共有\033[0m:\033[32;1m${Sum}\033[0m"

8、写一个脚本/root/bin/argsnum.sh,接受一个文件路径作为参数;如果参数个数小于1,则提示用户“至少应该给一个参数”,并立即退出;如果参数个数不小于1,则显示第一个参数所指向的文件中的空白行数

[[email protected] bin]# vim argsnum.sh
[[email protected] bin]# chmod u+x argsnum.sh
[[email protected] bin]# cat argsnum.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:统计第一个参数路径文件的空白行数

#判断是否输入参数,否则提示并退出
[[ $# -lt 1 ]] && echo -e "\033[31;1m请至少输入一个文件路径作为参数\033[0m" && exit
#判断输入的是否文件路径,否则提示并退出
[[  -f $1  ]] || echo -e "\033[31;1m输入的文件路径不存在,请在argsnum.sh后面重新输入一个正确的文件路径作为参数\033[0m" 
[[  -f $1  ]] || exit
#计算第一个参数文件中空白行数
FileSpaceLineNum=`grep ‘^$‘ $1|wc -l`
#输出第一个参数文件中空白行数
echo -e "\033[31;1m第一个参数文件中的空白行数为\033[0m:\033[32;1m${FileSpaceLineNum}\033[0m"

9、写一个脚本/root/bin/hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问”

[[email protected] bin]# vim hostping.sh
[[email protected] bin]# chmod u+x hostping.sh
[[email protected] bin]# cat hostping.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:输入一个IPv4地址作为参数,测试是否能够ping通并提示

#判断有无参数,若无参数则提示并退出
[[ -z [email protected] ]] && echo -e "\033[31;1m请输入一个IPv4地址作为参数\033[0m" && exit
#判断是否只有一个参数,如果有多个参数则提示并退出
[[ $# -gt 1 ]] && echo -e "\033[31;1m只能输入一个参数作为IPv4地址\033[0m" && exit
#判断参数是否为有效的IPv4地址,若不是则提示并退出
echo "$1"|grep -E ‘^([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$‘ &> /dev/null || echo -e "\033[31;1m请输入一个正确的IPv4地址\033[0m"
echo "$1"|grep -E ‘^([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){2}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$‘ &> /dev/null || exit
#ping该IPv4地址,并反馈结果
echo -e "\033[31;1m正在 ping "$1",请等待...\033[0m"
ping -c2 -W2 "$1" &> /dev/null && echo -e "\033[32;1m主机"$1"可访问\033[0m" || echo -e "\033[31;1m主机"$1"不可访问\033[0m"

10、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/fiile1文件是否不可读且不可写(因考虑到普通用户调用该脚本权限问题,故将脚本路径放到了/tmp/目录下,并且该脚本还可以判该文件的其他权限)

[[email protected] tmp]# vim per.sh 
[[email protected] tmp]# chmod 745 per.sh
[[email protected] tmp]# cat per.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:判断当前用户对某文件的读、写、执行权限并提示

#定义要检测文件的路径变量并赋值
SourceFile=/tmp/file1
#定义要检测文件的权限变量并赋值
[[ -r "${SourceFile}" ]]
Read=`echo $?`
[[ -w "${SourceFile}" ]]
Write=`echo $?`
[[ -x "${SourceFile}" ]]
Execute=`echo $?`
#检测当前用户对该文件的读、写、执行权限
[[ "${Read}" -eq 0 ]] && [[ "${Write}" -eq 0 ]] && [[ "${Execute}" -eq 0 ]] && echo -e "\033[32;1m当前用户对${SourceFile}文件有读、写、执行权限\033[0m"
#检测当前用户对该文件的读、写权限
[[ "${Read}" -eq 0 ]] && [[ "${Write}" -eq 0 ]] && [[ "${Execute}" -gt 0 ]] && echo -e "\033[34;1m当前用户对${SourceFile}文件有读、写权限\033[0m"
#检测当前用户对该文件的读、执行权限
[[ "${Read}" -eq 0 ]] && [[ "${Write}" -gt 0 ]] && [[ "${Execute}" -eq 0 ]] && echo -e "\033[34;1m当前用户对${SourceFile}文件有读、执行权限\033[0m"
#检测当前用户对该文件的写、执行权限
[[ "${Read}" -gt 0 ]] && [[ "${Write}" -eq 0 ]] && [[ "${Execute}" -eq 0 ]] && echo -e "\033[33;1m当前用户对${SourceFile}文件有写、执行权限\033[0m"
#检测当前用户对该文件的读权限
[[ "${Read}" -eq 0 ]] && [[ "${Write}" -gt 0 ]] && [[ "${Execute}" -gt 0 ]] && echo -e "\033[34;1m当前用户对${SourceFile}文件只有读权限\033[0m"
#检测当前用户对该文件的写权限
[[ "${Read}" -gt 0 ]] && [[ "${Write}" -eq 0 ]] && [[ "${Execute}" -gt 0 ]] && echo -e "\033[33;1m当前用户对${SourceFile}文件只有写权限\033[0m"
#检测当前用户对该文件的执行权限
[[ "${Read}" -gt 0 ]] && [[ "${Write}" -gt 0 ]] && [[ "${Execute}" -eq 0 ]] && echo -e "\033[33;1m当前用户对${SourceFile}文件只有执行权限\033[0m"
#检测当前用户对该文件无任何权限
[[ "${Read}" -gt 0 ]] && [[ "${Write}" -gt 0 ]] && [[ "${Execute}" -gt 0 ]] && echo -e "\033[31;1;5m当前用户对${SourceFile}文件无任何权限\033[0m"

下面图1是root用户更改file1权限的截图,图2是普通用户针对file1文件不同权限的测试结果截图

图1:

图2:

11、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统。

[[email protected] bin]# vim nologin.sh 
[[email protected] bin]# chmod u+x nologin.sh
[[email protected] bin]# cat nologin.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:禁止普通用户登录

#检测/etc目录下有无nologin文件,并定义回执变量
[[ -f /etc/nologin ]]
EtcReturnNum=`echo $?`
#检测/run目录下有无nologin文件,并定义回执变量
[[ -f /run/nologin ]]
RunReturnNum=`echo $?`
#禁止普通用户登录
[[ ${EtcReturnNum} -eq 0 ]] || [[ ${RunReturnNum} -eq 0 ]] && echo -e "\033[31;1m已禁止普通用户登录该系统\033[0m" && exit
[[ $"EtcReturnNum" -gt 0 ]] && [[ $"RunReturnNum" -gt 0 ]] && touch /etc/nologin && echo -e "\033[31;1m已禁止普通用户登录该系统\033[0m"

[[email protected] bin]# vim login.sh 
[[email protected] bin]# chmod u+x login.sh
[[email protected] bin]# cat login.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:允许普通用户登录

#检测/etc目录下有无nologin文件,并定义回执变量
[[ -f /etc/nologin ]]
EtcReturnNum=`echo $?`
#检测/run目录下有无nologin文件,并定义回执变量
[[ -f /run/nologin ]]
RunReturnNum=`echo $?`
#允许普通用户登录
[[ $"EtcReturnNum" -eq 0 ]] && rm -f /etc/nologin
[[ $"RunReturnNum" -eq 0 ]] && rm -f /run/nologin
echo -e "\033[32;1m已允许普通用户登录该系统\033[0m"

12、计算1+2+3+...+100的值

[[email protected] bin]# vim sum.sh
[[email protected] bin]# chmod u+x sum.sh
[[email protected] bin]# cat sum.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:计算1~10的和

#指定数字范围变量
Num=`echo {1..100}`
#计算求和
#方法一:
#let sum=`echo $Num | tr -t ‘ ‘ ‘+‘`
#方法二:
#sum=$[`echo $Num | sed ‘[email protected][[:space:]]@[email protected]‘`]
#方法三:
#sum=$((`seq 1 100 | tr -t ‘\n‘ ‘+‘|sed ‘[email protected][email protected]@‘`))
#方法四:
#sum=$(expr `seq 1 100|tr -t ‘\n‘ ‘+‘|sed ‘[email protected][email protected] + @g‘|sed ‘[email protected] + [email protected]@‘`)
#方法五:
sum=`echo $Num|tr -t ‘ ‘ ‘+‘|bc`
echo -e "\033[32;1m1~100的和为\033[0m:\033[33;1m${sum}\033[0m"

13、计算从脚本第一参数A开始,到第二个参数B的所有数字的总和,判断B是否大于A,否提示错误并退出,是则计算之

[[email protected] bin]# vim parametersum.sh 
[[email protected] bin]# chmod u+x parametersum.sh 
[[email protected] bin]# cat parametersum.sh 
#!/bin/bash
#Author:liang
#Version:1.0
#Description:计算该脚本第一个参数中所有数字和第二个参数中的所有数字之和,并判断第二个参数中所有数字之和是否大于第一个参数中所有数字之和,是则计算,否则提示错误并退出

#检测是否有参数
[[ $# -ge 2 ]] || echo -e "\033[31;1m请至少输入两个带有数字的参数\033[0m"
[[ $# -ge 2 ]] || exit
#检测参数知否有效
echo $1|grep ‘[0-9]\+‘ &> /dev/null || echo -e "\033[31;1m参数${1}无效,请重新输入\033[0m"
echo $1|grep ‘[0-9]\+‘ &> /dev/null || exit
echo $2|grep ‘[0-9]\+‘ &> /dev/null || echo -e "\033[31;1m参数${2}无效,请重新输入\033[0m"
echo $2|grep ‘[0-9]\+‘ &> /dev/null || exit
#分别取出第一个参数和第二个参数中的所有数字,并分别计算每个参数中的数字之和
NumA=`echo $1 | grep -o ‘[0-9]\+‘|tr -d ‘\n‘`
NumB=`echo $2 | grep -o ‘[0-9]\+‘|tr -d ‘\n‘`
SumA=$[`echo ${NumA} | sed ‘[email protected][0-9]@&[email protected]‘ | sed ‘[email protected][email protected]@‘`]
SumB=$[`echo ${NumB} | sed ‘[email protected][0-9]@&[email protected]‘ | sed ‘[email protected][email protected]@‘`]
#检测第二个参数中的数字之和是否大于第一个参数中的数字之和
[[ ${SumB} -gt ${SumA} ]] || echo -e "\033[31;1m第二个参数中数字之和小于或等于第一个参数中的数字之和,请重新输入\033[0m"
[[ ${SumB} -gt ${SumA} ]] || exit
#计算两个参数中的所有数字之和
SumAB=$[SumA+SumB]
echo -e "\033[33;1m两个参数中所有数字之和为\033[0m:\033[32;1m${SumAB}\033[0m"

时间: 2024-12-14 05:35:52

bash脚本练习的相关文章

Linux Bash脚本基本语法知识

写在前面:如果此文有幸被某位朋友看见并发现有错的地方,希望批评指正.如有不明白的地方,愿可一起探讨. 前提:读者能够基本使用一款文本编辑器以及了解文件的权限概念. 准备工作 在/home目录创建script文件用于保存所有的脚本程序: # mkdir /home/script # cd /home/script/ Bash脚本的基本输入输出 第一个bash脚本: # vim ./hello-world.sh 说明: "#!"是一个约定标记,它告诉系统这个脚本需要什么解释器来执行 作为可

Bash脚本之if、case、read和位置参数

在学会了基本的命令之后,我们就可以使用这些命令来进行编程了.在Linux中的编程称为shell脚本,是将命令进行结合形成的类似Windows中批处理的东西.在这个脚本中,可以有变量和结构体.每一个程序所拥有的程序执行过程,例如:顺序执行.选择执行和循环执行都可以在脚本中体现出来.下面就对shell脚本进行介绍. 首先,shell脚本编程是过程式编程语言,也就是说shell脚本强调接下来要执行的步骤,就好像是人在对shell说接下来要做什么,要明确的指出每一步的方法.然后shell还是脚本类语言,

从此编写 Bash 脚本不再难【转】

从此编写 Bash 脚本不再难 原创 Linux技术 2017-05-02 14:30 在这篇文章中,我们会介绍如何通过使用 bash-support vim 插件将 Vim 编辑器安装和配置 为一个编写 Bash 脚本的 IDE. -- Aaron Kili 本文导航 -什么是 bash-support.vim 插件? …… 05% -如何在 Linux 中安装 Bash-support 插件 …… 10% -如何在 Vim 编辑器中使用 Bash-support 插件 …… 17% -如何为

用Bash脚本将Linux普通用户添加为系统管理员

将Linux普通用户添加为系统管理员在Gnome或KDE这样强大与完善的桌面环境下是非常简单的事情,一般来说在用户设置的对话框里就直接有相应选项.不过,出于简洁与高效的风格,自己目前并未使用这些高端但吃内存的“重量级”桌面环境,使用的就是最基本的X视窗+Sawfish窗口管理器的组合.在这样的环境下进行用户管理,都是通过命令行来完成.如,使用useradd命令添加新用户.不过,由useradd命令添加的用户只具有普通使用者的权限,不具备系统管理的能力.这样一来,就给一些常见的操作带来不便,如,使

Linux应用环境实战10:Bash脚本编程语言中的美学与哲学(转)

阅读目录 一.一切皆是字符串 二.引用和元字符 三.字符串从哪里来.到哪里去 四.再加上一点点的定义,就可以推导出整个Bash脚本语言的语法了 五.输入输出重定向 六.Bash脚本语言的美学:大道至简 总结: 我承认,我再一次地当了标题党.但是不可否认,这一定是一篇精华随笔.在这一篇中,我将探讨Bash脚本语言中的美学与哲学. 这不是一篇Bash脚本编程的教程,但是却能让人更加深入地了解Bash脚本编程,更加快速地学习Bash脚本编程. 阅读这篇随笔,不需要你有Bash编程的经验,但一定要和我一

bash脚本编程之条件判断、条件测试

脚本编程: 编程面向过程有如下几种执行方式 顺序执行 选择执行:  如 if, case 循环执行:  如 for, while, until bash的变量类型: 本地变量 set VAR_NAME=value 设置变量赋值 如: set User=Centos unset VAR_NAME 撤消变量赋值 如: unset User=Centos ${VAR_NAME} 作用范围:当前shell进程: 局部变量 local VAR_NAME=value 设置变量赋值 unset VAR_NAM

回忆曾经写过的第一个Bash脚本

这盘文章,算是杂谈吧,想谈谈我对于Linux操作系统的灵魂之笔 Bash的理解. 据说Shell脚本有50种之多(陈皓老师的酷壳网上有一篇博文 http://coolshell.cn/articles/8619.html 提到),现在,用Linux调试大大小小程序,除了使用Makefile,偶尔用用CMakeList.txt, 更多程序是用bash 脚本来实现半自动化调试,就像在VS下面,每次修改重新编译一样,你总是 gcc 或者 g++,然后 ./test 运行,然后再看看有没有错,编译出错又

bash脚本编程之变量、变量类型、条件测试、算术运算、及特殊变量

一.学习目的 1.了解bash脚本的变量类型及变量的使用 2.了解bash中条件测试的种类及如何在bash中实现条件的判断 3.学会在bash中做算术运算 4.了解特殊变量的使用 二.学习内容 1). ①.bash的变量类型: 环境变量 .本地变量.局部变量.位置变量.特殊变量 环境变量: export VALUENAME = VALUE 作用领域是当前的shell进程及其子进程 本地变量: VALUENAME= VALUE 作用领域为整个bash的进程 局部变量:local VALUENAME

bash脚本的变量使用详解

变量的类型包括整数.字符串和数组,但在bash脚本编程中不需要指定类型就可以直接赋值,默认均为字符型,其参与运算会自动进行隐式类型转换. 变量的赋值方式为:name='value',其中"="两边一定不能有空格,如果变量值中包含有空格则需要使用引号引起来,需要注意的是强引用和弱引用的区分.此外变量的赋值也可以引用变量和命令,如果引用变量赋值需要使用双引号,如果引用命令赋值需要使用反向单引号.变量的引用需要使用"$"符号,如引用变量PATH:$PATH 或 ${PAT

经典实用的自动创建Bash脚本文件头的脚本

今天给大家展示一下,我自己写的一个自动创建Bash脚本文件头的脚本(名为create),希望能对初学脚本者带来一定的思维提示.毕竟对于一个经常写脚本的运维人员来说,每次写脚本的时候都需要重复的去写一遍文件头,也是一件很累赘的事情,既然我们学了脚本,为什么不让它来为我们减轻一下负担了.所以一个自动创建Bash脚本文件头的想法在我脑海里面产生了. 本脚本所需要实现的功能: 1,能够自动创建一个标准的Bash脚本文件头,带有详细注释信息 2,能够给新建完成的Bash脚本文件自动添加执行权限 [[ema