几个小型 bash 例子

【shell】bash script基础入门及例子(附代码)持续更新 Bash(Bourne Again SHell)是一种广泛使用的Unix shell和命令语言。Bash(Bourne Again SHell)是一种命令语言,同时也是一个命令行界面。它是一个解释器,解释并执行输入到命令行的命令。Bash 作为Linux和macOS的默认shell,Bash在自动化脚本、任务调度、系统管理等方面非常流行。本文主要介绍了一些基础操作,包括运算符、变量、数组、输入、重定向、流程控制、循环、函数定义。 阅读详情

求下标的一个 bash 脚本

  今天很大力气写了一个脚本,平时很少写, 因此这次几乎每一行都要搜索很久才能弄出来。先说功能
  元素作为数组下标 的一个枚举:

enum
{
CSTR_JIE_XI_WANG_LUO_XIN_XI_BIAO,
CSTR_PIN_LV_FU_HAO_LV_TIAO_ZHI_FANG_SHI,
CSTR_WEI_ZHI_JIE_MU,
CSTR_DIAN_SHI_JIE_MU,
CSTR_GUANH_BO_JIE_MU,
CSTR_GU_PIAO_FU_WU,
CSTR_ZI_XUN_FU_WU,
CSTR_TE_SE_FU_WU,
CSTR_JIE_MU_ZHI_NAN,
CSTR_PIN_DAO_GUAN_LI,
CSTR_XI_TONG_SHE_ZHI,
CSTR_MAIN_HELP,
CSTR_HUAN_YING_SHOU_KAN,
CSTR_QAM16,
CSTR_QAM32,
CSTR_QAM64,
CSTR_QAM128,
CSTR_QAM256,
CSTR_KAI_SHI_SOU_SUO,
CSTR_PIN_LV,
CSTR_FU_HAO_LV,
CSTR_TIAO_ZHI_FANG_SHI,
CSTR_ZHENG_ZAI_BAO_CUN_JIE_MU_XIN_XI,
CSTR_SOU_SUO_YI_ZHONG_DUAN_AN_TUI_CHU_JIAN_FAN_HUI,
CSTR_NIAN_YUE_RI_SHI_FEN,
........................
STR_JEI_MU_FENG_LEI,//"节目分类",
STR_QUAN_BU_PING_DAO_LIE_BIAO,//"全部频道列表"
STR_QUAN_BU_GUANG_BO_LIE_BIAO,//"全部广播列表"
STR_JIE_MU_SHUO_DING,//"节目锁定",
STR_CAI_DAN_SHUO_DING,//"菜单锁定",
STR_JI_DING_HE_SHUO_DING,//"机顶盒锁定",
STR_DIAN_SHI_JIE_MU_BIAN_JI,//"电视节目编辑"
STR_GUANG_BO_JIE_MU_BIAN_JI,//"广播节目编辑"
STR_BEN_JI_XING_XI,//"本机信息"
}

  里面可能有几千个元素,每个元素开头部分都是 CSTR_ 或者 STR_ ,任意给出一个元素要求出它在枚举里面处于第几个–从0开始。

#!/bin/bash

m=0                                       /// 全局变量,初始化为 0 ,累加 得出 指定元素位置
function is_macro()
{
    string1=$1                        /// 函数参数:直接用就行了,跟C语言不一样,不用在函数实现里面写明
    string2=${string1:0:4}            /// 字符串固定位置截取
    string3=${string1:0:3}

    #echo $string2
    if [ "$string2" = "CSTR" ] || [ "$string3" = "STR" ];       /// 每个元素开头部分都是 CSTR_  或者 STR_ 
    then
        a=1
        #echo "1"
        #echo $string1
    else                                                        /// 还存在函数声明,注释,空行 等各种情况
        #echo "0"
        a=0
    fi
    #return $?
    #then
    #echo $string2 #fi
    #echo $1
    return $a
}


for LINE in `cat /home/skyworth/work/MainCode/code/include/skgui/sky_multi_language.h` 
#echo $filecontent
do
    #echo $LINE
    is_macro $LINE                       /// 函数调用方式
    a=$?                                 /// 这里就是返回值了!
    #echo $a
    if [ $a -eq 1 ];                     /// 如果<span style="font-family: Arial, Helvetica, sans-serif;">开头部分都是 CSTR_  或者 STR_ </span>
    then
        #m=$(($m+1))
        test `expr match "$LINE" "$1"` -ne 0       /// 这里的 $1 就是参数了
        a=$?                                       /// test 的测试结果只能为0 或者 1
        #echo $a
        if [ $a -eq 0 ];                 
        then
            #echo $LINE
            echo $m
            break           
        fi
        let m=m+1                                   /// 变量自加 1
    fi
done

用上面的脚本执行命令:

./1.sh CSTR_QAM16

正好输出13 。

笔记本 Ubuntu 下禁止触摸板

  自己使用的笔记本按键没有禁止触摸板的功能,没法只能自己写个脚本来完成。
1 输入input –list 得到输出:

⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ PixArt USB Optical Mouse                  id=11   [slave  pointer  (2)]
⎜   ↳ ImPS/2 ALPS GlidePoint                    id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Laptop_Integrated_Webcam_FHD              id=10   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=12   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=14   [slave  keyboard (3)]

  上面的输出中,Virtual core pointer 表示鼠标,因为我的鼠标是usb接口,所以用lsusb查看一下鼠标是哪个。

sina@ubuntu:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 1bcf:280b Sunplus Innovation Technology Inc. 
Bus 002 Device 003: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse

  上面中Pixart是鼠标所以 触摸屏应当是ImPS/2 。它的ID是13。0禁用,1启用。
输入如下命令

$ xinput set-prop 13 "Device Enabled" 0

触摸板被禁用。

  可以写如下脚本来自动完成上述过程:

temp=`xinput list | grep 'ImPS/2' | awk '{print $6}' | awk -F= '{print $2}'`
xinput set-prop $temp "Device Enabled" 0

  如果换成其它笔记本也可以仿照上面的 稍微修改几个参数就可以了!

读文件一行,处理某一行

写法1:

#!/bin/bash
while read line
do
      echo $line     #这里可根据实际用途变化
done < urfile

写法2:使用管道

#!/bin/bash
cat urfile | while read line
do
    echo $line
done

写法3:使用循环,如果行中有空格或者tab则无法使用此方法

#!/bin/bash
for i in `cat urfile`
do
    echo $i
done
bash入门学习实例 立即下载

相关推荐

C语言实战:最小二乘法在传感器数据校准中的应用(附完整代码)

本文详细介绍了如何使用C语言实现最小二乘法,对传感器数据进行线性校准。通过模拟带噪声的传感器数据,手把手演示了从核心算法实现、参数计算到效果验证的完整流程,并提供了可直接编译运行的完整源码,帮助嵌入式开发者解决传感器数据不准的常见问题,提升系统测量精度。

weixin_28025327的博客 515

Bash 实例,第 1 部分:Bourne again shell (bash) 基本编程

Daniel Robbins总裁兼 CEO,Gentoo Technologies, Inc.2000 年 3 月        通过学习如何使用 bash 脚本语言编程,将使 Linux 的日常交互更有趣和有生产力,同时还可以利用那些已熟悉和喜爱的标准 UNIX 概念(如管道和重定向)。在此三部分系列中,Daniel Robbins 将以示例指导您如何用 bash 编程。他将讲述非常基本的知识(

ZCatLinux --资讯与技术社区--Open Source World----Linux/Shell/DevOPS-- 7160

基于PSIM仿真的单相全桥逆变电路

根据单极性SPWM调制电路、双极性SPWM调制电路和逆变器拓扑可以得到完整的逆变器仿真电路模型。

weixin_59329579的博客 1万+

Bash经典用法及其案例

前言:在linux中,Bash脚本是很基础的知识,大家可能一听脚本感觉很高大上,像小编当初刚开始学一样,感觉会写脚本的都是大神。虽然复杂的脚本是很烧脑,但是,当我们熟练的掌握了其中的用法与技巧,再多加练习,总有一天也会成为得心应手的脚本大神。脚本在生产中的作用,想必小编我不说,大家也都知道,脚本写的6,可以省下很多复杂的操作,减轻自己的工作压力。好了,废话不多说,接下来,就是...

weixin_34192993的博客 257

【电路设计】SERDES与pcie

明确通信接口需要达到什么样的数据速率、信号完整性以及系统中各个部件的互相作用。2.

数字人生 4563

多模态脑区细分图谱 HCP-MMP v1.0, Glasser et al. 2016 皮层和皮下区域,简写和全称对应关系

人类连接组计划多模态脑区细分图谱(HCP-MMP)提供了对人类大脑皮层区域的非常有用的细分(Glasser et al. 2016a, b)。图谱是多模态的,因为每个区域都是根据四个标准的组合定义的,包括结构(T1加权/T2加权髓鞘含量和皮层厚度图)、静息态功能连接、基于任务的激活和拓扑地形组织。HCP-MMP v1.0图谱包含每个半球180个皮层区域,基于210名参与者的分析。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 2618

一些简单的shell脚本实例

1.模拟linnux登录shell#/bin/bash echo -n "login:" read name echo -n "password:" read passwd if [ $name = "cht" -a $passwd = "abc" ];then echo "the host and password is right!" else echo "input is error!" f

li575098618的专栏 1912

【全局路径规划模块运动学算法】无人机Kinodynamic A*算法、Kinodynamic RRT*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Kinodynamic A*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容啃这个Kinodynamic A_star算法,建议先啃一啃高飞fast_planner那篇论文,把理论打好,如果还是比较迷,就先看Dijksta、再看A_star、再看hybrid A_star 三个的流程,因为往上资料比较多,再看这个Kinodynamic A_star算法,流程已经很相像了。如果。

qq_35635374的博客 2600

Bash 编程

...

Shum Laboratory 196

SpringBoot DDoS防护:限流与验证全面指南

SpringBoot应用DDoS防护摘要 本文介绍了SpringBoot应用防护DDoS攻击的方案。DDoS攻击通过分布式请求耗尽服务器资源,导致服务不可用、成本激增等风险。防护需遵循分层防御、弹性设计等原则。 核心方案包括: 令牌桶限流:使用Guava RateLimiter控制请求速率 滑动窗口算法:通过Redis+Lua实现精确的分布式限流 微服务集成:利用Spring Cloud Gateway统一管理API限流 实施建议: 关键接口默认添加限流保护 监控系统实时警报异常流量 结合WAF等多层防护措

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 2486

基于LUT表对鱼眼图像进行畸变校正

当然也可以进行图像的畸变校正操作,已知相机的焦距为fx/fy,光心为cx/cy,像素大小为p(单位mm/pixel)对于畸变校正结果图中像素点(u,v),其对应的原图中的像素坐标(u',v')的计算流程描述如下。1)假设无畸变相机成像模型的焦距和光心与原相机相同,计算得到无畸变相机成像模型中归一化平面坐标(X,Y,Z),其中X=(u-cx)/fx,Y=(v-cy)/fy,Z=1。这里x'/y'的单位为像素。

On my way 639

从纯DOS下选择进入LINUX 和WINDOWS系统

   本人比较喜欢简单实用的操作系统,只要能完成必要的使用就行,没必要过于庞大,所以本文目的在于简单.本文仅供技术交流,所使用软件版权归软件作者或其所在公司所有,本文发布在优快云上,本人MHY_MHY为名.敬请批评指正   关键字: 纯DOS引导,CDLINUX,WINDOWS PE,应急办公,GRUB,将PE 安装到硬盘,将CDLINUX安装到硬盘,GRUB引导进入WINDOWS  PE,GR

MHY_MHY的专栏 3008

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

DoS攻击原理和防御方法

echnorati 标签:DoS,攻击,网络防御,TCP,SYN_Flood TCP/IP协议的权限DoS (拒绝服务攻击)----- Denial of Service 该攻击的原理是利用TCP报文头来做的文章. 下面是TCP数据段头格式。 Source Port和 Destination Port :是本地端口和目标端口 Sequence N...

weixin_34152820的博客 7991

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

电脑中毒后的六大紧急措施

这样做,杀毒软件可能会报告某些文件在受读写保护无法清理,但带毒运行的实际目的不在于完全清除病毒,而是在于把CIH下次开机时候的破坏减到最低,以防它再次开机破坏主板的BIOS硬件,那么就会黑屏,让你的下一步杀毒无法进行。现在虽然有众多的杀毒软件和防火墙供大家作为电脑的保护,但新病毒和木马,加上黑客人工的入侵方式,电脑中毒的情况还是很普遍.尤其是上网的用户,一不留意就会中招。2、是黑客的潜在的木马发作,或是蠕虫类病毒发作,让你的机器不断地向外界发送你的隐私、或是利用你的名义和邮件地址发送垃圾,进一步传播病毒;

m0_38073539的博客 968

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

用DOS命令破除UNIX管理员口令

用DOS命令破除UNIX管理员口令   对于广大的SCOUNIX操作系统管理员来说,最不可原谅的过失之一就是忘记了管理员口令(即超级用户口令)。这个过失会导致极其严重的后果,对此凡是具备UNIX操作系统常识的人都应该知道。然而令人遗憾的是,时至今日铸错者依然大有人在。看来,对他们固然要责备,但既然问题客观存在,我们就总还须面对现实,想办法去解决才是。   长期以来,许多人就超级用户口令被忘记的...

weixin_30795127的博客 138

DOS攻击

DOS攻击

m0_73146715的博客 1791

你应该知道的 15个Linux Bash拓展例子

Bash 历史非常悠久,懂的怎样使用它的拓展历史将会让你在Linux命令行的使用上极具创造性。 这篇文章解释了15个使用Bash的例子: 实践指示符----指历史的特别命令 以 !开始。 单词指示符----指特定的历史入口。这个even指示符和word指示符都被空格分开

钱国正的专栏 1312

25个简单shell例子

1.模拟linnux登录shell 复制代码 代码如下: #/bin/bash echo -n "login:" read name echo -n "password:" read passwd if [ $name = "cht" -a $passwd = "abc" ];then echo "the host and password is right!" els

panther的专栏 2万+

Bash Shell 常用例子

一些bash shell的常用例子汇总。

Clement-Xu的专栏 2436

bash脚本中的典型例子

今天在加班中秋加班唉,苦逼的工程师,这次给大家带来一些例子,脚本的编程。 写一个脚本:如果某路径不存在,则将其创建为目录;否则显示其存在,并显示内容类型; #!/bin/bash # if[$#-ne1] then echo"必须输入一个目录" exit1 fi if[-d$1] then echo"目录$1存在" ...

weixin_34334744的博客 503

BASH 实例 第一部分

http://www.ibm.com/developerworks/cn/linux/shell/bash/bash-1/ 您可能要问:为什么要学习 Bash编程?好,以下是几条令人信服的理由: 已经在运行它 如果查看一下,可能会发现:您现在正在运行 bash。因为 bash 是标准Linux shell,并用于各种目的,所以,即使更改了缺省 shell,bash可能 仍

在路上 501

Bash 实例,第 3 部分:探讨 ebuild 系统

Daniel Robbins总裁兼 CEO,Gentoo Technologies, Inc.Daniel Robbins 在其最后一篇 Bash 实例文章中详细讲述了 Gentoo Linux ebuild 系统,这个展示 bash 能力的极佳范例。循序渐进地,他为您展示如何实现 ebuild 系统,并触及很多方便的 bash 技术和设计策略。在本文末尾,您将很好地掌握制造完全基于 ba

ZCatLinux --资讯与技术社区--Open Source World----Linux/Shell/DevOPS-- 4027

Bash 实例

#!/bin/sh #排序三个输入的字符串 echo please input three strings ending with ENTER read str1 read str2 read str3 if [ $str1 -gt $str2 ] then echo str1 gt str2 tmp=$str1 str1=$str2 str2=$tmp fi if [

cloud 的学习时代 711

简单bash示例

  #!/bin/bash a=1 if [ $a -gt 90 ]; then echo 'a &gt; 90' elif [ $a -lt 50 ];then echo 'a &lt; 50' else echo '50 &lt; a &lt;90' fi    

wzgdavid的博客 261

shell 案例

编写 hello world 脚本 #!/bin/bashecho "hello world" 通过位置变量创建 Linux 系统账户及密码 #!/bin/bash#$1 是执行脚本的第一个参数,$2 是执行脚本的第二个参数useradd "$!" echo "$2" | passwd ‐‐stdin "$2" 每周 5 使用 tar 命令备份/var/log 下的所有日志...

weixin_33737774的博客 451
上一篇: shell 脚本报错^M: syntax error near unexpected token
下一篇: OpenGL入门学习
xianjian_x
博客等级 码龄14年 231粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值