(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结 您所在的位置:网站首页 linux课程总结1000字 (P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结

2023-03-11 03:25| 来源: 网络整理| 查看: 265

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结 原创

喜欢打篮球的普通人 2023-03-09 09:25:07 博主文章分类:鸟哥Linux私房菜 ©著作权

文章标签 bash 字符串操作 字符串 文章分类 HarmonyOS 后端开发

©著作权归作者所有:来自51CTO博客作者喜欢打篮球的普通人的原创作品,请联系作者获取转载授权,否则将追究法律责任

文章目录​​1.函数的使用​​​​2.字符串操作​​​​3.一些内置命令:expr、shift、eval、trap等​​​​4.Shell内置命令总结​​1.函数的使用和其它编程语言一样,Bash也可以定义函数一个函数就是一个子程序,用于完成特定的任务,当有重复代码,或者一个任务只需要很少的修改就被重复几次执行时,这时你应该考虑使用函数函数的一般格式为function function_name{ commands}

推荐使用下面的方式function_name (){ commands}

函数eg (1)只需要输入函数名即可调用该函数 (2)函数必须在调用之前定义#!/bin/bash

fun(){ echo "Entering function" echo "Exiting function"}fun

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_bash

函数参数传递eg#!/bin/bashfunc1(){ echo "the parameter count: $#" $#参数个数 echo "fist para: $1" $1第一个参数 echo "second para: $2" $2第二个参数}

func1 a b

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_bash_02

shell调用其它shell中的函数 vim tool.sh#!/bin/bashtest(){ echo "hello world"}

vim fun.sh

#!/bin/bash. tool ##点号表示包含tool文件,相当于C语言中include头文件test ##调用test函数

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_bash_03

2.字符串操作字符串操作${#var} 返回字符串变量var的长度${var:m} 返回${var}中从第m个字符到最后的部分,m从0开始,m的取值从0到${#var}${var:m:len} 返回${var}中从第m个字符开始,长度为len的部分${var#pattern} 删除${var}中开头部分与pattern匹配的最小部分${var##pattern} 删除${var}中开头部分与pattern匹配的最大部分${var%pattern} 删除${var}中结尾部分与pattern匹配的最小部分${var%%pattern} 删除${var}中结尾部分与pattern匹配的最大部分${var/old/new} 用new替换${var}中第一次出现的old${var//old/new} 用new替换${var}中所有的old(全局替换)

注意:pattern,old中可以使用通配符

测试:#!/bin/bash

var="/aa/bb/cc"result1=${var#*/}result2=${var##*/}result3=${var%/*}result4=${var%%/*}echo $varecho '${var#*/}'=$result1echo '${var##*/}'=$result2echo '${var%/*}'=$result3echo '${var%%/*}'=$result4

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_字符串操作_04

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_bash_05

3.一些内置命令:expr、shift、eval、trap等生成随机数的特殊变量echo $RANDOMexpr:通用的表达式计算命令 表达式中参数与操作符必须以空格分开,表达式中的运算可以是算数运算,比较运算,字符串运算和逻辑运算。expr 5 % 3expr 5 \ 3 #乘法符号必须被转义

注意:目前用的少,可用$[...]替换

shift命令 (1)一般用于函数或者脚本程序参数出来,特别是参数多余10以上的时候 (2)将所有参数变量向下移动一个位置,$2变成$1,$3变成$2,依次递进,但是$0保持不变($0是脚本名称)eg:#!/bin/bash

while [ "$1" != "" ]do echo $1 shiftdone

测试:

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_字符串_06

eg:#!/bin/bash

while [ "$1" != "" ]do echo $* shiftdone

测试: 将参数循环一遍,并打印 $*表示所有的参数列表

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_字符串_07

eval命令 将所有的参数连接成一个表达式,并计算或执行该表达式,参数中的任何变量都将被展开。eval arg1 [arg2] ... [argN]

listpage="ls -l | more"$listpage

listpage="ls -l | more"eval $listpage

eg:#!/bin/bashcmd=if [ "$1" == "1" ];then cmd="ls"else cmd="ls -l"fi

eval $cmd

测试: eval使得要执行的命令具有动态性

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_字符串操作_08

trap命令 (1)trap:捕获信号的意思 (2)信号是软中断,使得程序有了异步处理的能力。(3)当程序顺序执行下来的时候,如果发生信号,将转去执行信号所关联的操作。 (4)trap可以对信号的操作进行关联trap command signal

command一般情况下是Linux命令’ ’表示发生陷阱时为空指令,不做任何动作’-’表示发生陷阱时采用缺省指令

signalHUP(1) 挂起;一般因终端掉线或用户退出而引发INT(2) 中断;一般因按下”Ctrl+C”组合键引发QUIT(3) 退出;一般因按下”Ctrl+\”组合键引发ABRT(6) 异常中止;一般因某些严重的执行错误而引发ALRM(14) 闹钟;一般是超时时钟到来而引发TREM(15) 中止;一般由系统在关机的时候发出

eg:#!/bin/bash#安装2、3号信号#处理代码为"rm -f tmp$$;exit 0“ trap "rm -f tmp$$;exit 0" 2 3#生成文件,文件名为tmp+当前进程号touch tmp$$#睡眠60秒,以便向当前进程发送信号sleep 60

exit 0表示退出当前进程$$表示当前进程号当2号信号和3号信号来的时候,会执行rm -f tmp$$;exit 0

测试:

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_字符串_09

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_bash_10

按下ctrl + C,产生2号信号,2号信号的动作是删除文件,并退出当前进程. tmp21065文件已经不存在了

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_字符串操作_11

eg:锁屏程序#!/bin/bashtrap "nice_try" 2 3 15TTY=`tty`nice_tty(){ echo -e "\nNice try, the terminal stays locked"}##stty -echo 表示输入不明显,就是输入密码12345的时候,不显示echo -n "Enter your password to lock $TTY:"read PASSWORD ##这里要输入正确的密码clearecho -n "Enter your password to unlock $TTY:"while :do read RESPONSE if [ "$RESPONSE" == "$PASSWORD" ];then echo "unlocking" break fi clear echo "wrong passord and terminal is locked..." echo -n "Enter your password to unlock $TTY:"done##stty echo 结束时,恢复明显测试: 继续按下ctrl C也无法打断程序,除非输入正确的命令才可以解锁

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_字符串_12

(P7)shell编程入门第7讲:函数:字符串操作 ,一些内置命令:expr、shift、eval、trap等 ,Shell内置命令总结_bash_13

4.Shell内置命令总结

内置命令

命令说明

echo

输出一行文本到标准输出设备

read

从标准输入设备读入数据

printf

格式化输出

declare

定义或创建变量或数组

let

让未定义的变量参与算数运算

expr

执行表达式

shift

把所有参数变量向下移动一个位置

eval

执行命令

trap

用来定义接收OS信号后而采取的动作

exit

退出SHELL程序

sleep

睡眠

test

条件测试

收藏 评论 分享 举报

上一篇:shell最佳入门

下一篇:(P22)socket编程:socketpair、sendmsg/recvmsg、UNIX域套接字传递描述符字



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有