这期内容当中小编将会给大家带来有关linux Bash编程语法都有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在Linux学习过程中,我们无可避免的会碰到一个既让人喜欢,又令人头疼的神奇的东西&am
这期内容当中小编将会给大家带来有关linux Bash编程语法都有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
在Linux学习过程中,我们无可避免的会碰到一个既让人喜欢,又令人头疼的神奇的东西——bash编程,即shell脚本。那么什么是shell脚本呢?shell是一个命令语言解释器,而shell脚本则是Linux命令的集合,按照预设的顺序依次解释执行,来完成特定的、较复杂的系统管理任务,类似于windows中的批处理文件。
bash编程之变量
bash变量类别
本地变量:只对当前shell进程有效的变量,对其它shell进程无效,包当前shell进程的子进程
VAR_NAME=VALUE
变量赋值:向变量的存储空间保存数据
变量引用:${VAR_NAME}
"":弱引用,里面的变量会被替换 '':强引用,里面的所有字符都是字面量,直接输出
环境变量:对当前shell进程及其子shell有效,对其它的shell进程无效
定义:export VAR_NAME=VALUE 导出:export VAR_NAME 撤消变量:unset VAR_NAME 只读变量:readonly VAR_NAME
局部变量: 对shell脚本中某代码片断有效,通常用于函数本地
local VAR_NAME=VALUE
位置变量:用来接受变量指定位置的参数
$1,$2...,${10}
特殊变量:shell对一些参数做特殊处理,这些参数只能被引用而不能被赋值
$# 传递到脚本的参数个数 $* 显示所有向脚本传递的参数 #与位置变量不同,此选项参数可超过9个 $$ 获取当前shell的进程号 $! 执行上一个指令的进程号 $? 获取执行的上一个指令的返回值 #0为执行成功,非零为执行失败 $- 显示shell使用的当前选项,与set命令功能相同 $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数
查看变量:
set:查看当前shell进程中的所有变量 export, printenv, env:查看当前shell进程中的所有环境变量
变量命名:
1、不能使用程序中的关键字(保留字)
2、只能使用数字、字母和下划线,且不能以数字开头
3、要见名知义
变量类型:
数值型:精确数值(整数),近似数值(浮点型) 字符型:char,string 布尔型:true, false
类型转换:
显式转换 隐式转换
bash的配置文件:
功能:设定本地变量,定义命令别名
profile类:为交互式登录的用户提供配置
全局:/etc/profile、/etc/profile.d}: 返回的结果是var/log/messages ${file##*/}: 返回messages
${variable%Word*}: 在variable中存储字串上,自右而左,查找第一次出现word,删除此word处至字串尾部的所有内容;
${variable%%world*}:在variable中存储字串上,自右而左,查找最后一次出现word,删除此word处至字串尾部的所有内容;
file='/var/log/messages' ${file%*/}: 返回的结果是/var/log ${file%%*/}: 返回结果为空 例:url="Http://www.redhat.com:80" 取端口:${url##*:} 取协议:${url%%:*}
查找替换:
${variable/pattern/substi}: 替换第一次出现
#userinfo=`tail -1 /etc/passwd #echo $userinfo scholar:x:500:500:scholar:/home/scholar:/bin/bash #echo ${userinfo/scholar/redhat} redhat:x:500:500:scholar:/home/scholar:/bin/bash
${variable//pattern/substi}:替换所有的出现
#echo ${userinfo//scholar/redhat} redhat:x:500:500:redhat:/home/redhat:/bin/bash
${variable/#pattern/substi}:替换行首被pattern匹配到的内容
#echo ${userinfo/#scholar/redhat} redhat:x:500:500:scholar:/home/scholar:/bin/bash
${variable/%pattern/substi}:替换行尾被pattern匹配到的内容
#echo ${userinfo/%bash/redhat} scholar:x:500:500:scholar:/home/scholar:/bin/redhat
pattern可以使用globbing中的元字符:* ?
查找删除:
${variable/pattern}:删除第一次出现
#echo ${userinfo/scholar} :x:500:500:scholar:/home/scholar:/bin/bash
${variable//pattern}:删除所有的出现
#echo ${userinfo//scholar} :x:500:500::/home/:/bin/bash
${variable/#pattern}:删除行首被pattern匹配到的内容
#echo ${userinfo/#scholar} :x:500:500:scholar:/home/scholar:/bin/bash
${variable/%pattern}:删除行尾被pattern匹配到的内容
#echo ${userinfo/%bash} scholar:x:500:500:scholar:/home/scholar:/bin/
大小写转换:
小–>大:${variable^^}
#echo ${userinfo^^} SCHOLAR:X:500:500:SCHOLAR:/HOME/SCHOLAR:/BIN/BASH
大–>小:${variable,,}
#name="SCHOLAR" #echo ${name,,} scholar
变量赋值操作:
${variable:-string}:variable为空或未设定,那么返回string,否则,返回variable变量的值;
${variable:=string}:variable为空或未设定,则返回string,且将string赋值给变量variable,否则,返回variable的值;
为脚本使用配置文件,并确保某变量有可用值的方式
variable=${variable:-default vaule}
写个脚本,配置etc目录;
(1) 在配置文件中定义变量;
(2) 在脚本中source配置文件;
#!/bin/bash [ -f /etc/sysconfig/network ] && source /etc/network/network [-z "$HOSTAME" -o "$HOSTNAME" = '(none)' ] || HOSTNAME ='localhost' /bin/hostname $HOSTNAME /bin/hostname
mktemp命令:
mktemp [OPTioNS] filename.XXX
-d: 创建临时目录 --tmpdir=/path/to/somewhere :指定临时文件所在的目录 mktemp /tmp/tmp.XXX #XXX生成相同数量随机字符 mktemp --tmpdir=/var/tmp tmp.XXX #指定目录创建临时文件 mktemp --tmpdir=/var/tmp -d tmp.XXX #指定目录创建临时目录
install命令:
install [OPTIONS] SOURCE DEST
install [OPTIONS] SOURCE… DIR
install [OPTIONS] -d DIR …
增强型的复制命令: -o OWNER -g GROUP -m MODE -d : 创建目录 install /etc/fstab /tmp #复制文件到指定目录 install --mode=644 /etc/fstab /tmp/ #复制时指定权限 install --owner=scholar /etc/fstab /tmp #复制时指定属主 install --group=scholar /etc/fstab /tmp #复制时指定属组 install -d /tmp/install #创建目录
上述就是小编为大家分享的Linux Bash编程语法都有哪些了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网操作系统频道。
--结束END--
本文标题: Linux Bash编程语法都有哪些
本文链接: https://lsjlt.com/news/282218.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0