首页
学习
活动
专区
圈层
工具
发布

shell脚本的替换功能实现

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。...Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 Shell 脚本(shell script),是一种为 shell 编写的脚本程序。...运行 Shell 脚本有两种方法: 1、作为可执行程序 将代码保存为 test.sh,并 cd 到相应目录: chmod +x ./test.sh #使脚本具有执行权限 ..../test.sh #执行脚本 2、作为解释器参数 这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如: /bin/bash test.sh 目的:将jvm启动时的设置为2048M.../bin/bash  #表示指定了shell脚本解释器的路径 baseDir="/home/q/www"  #定义了一个目录变量 function replace() { #定义了一个方法,在下面的for

1.2K10

基于网传的shell脚本,进行简单优化

7.txt -rw-r--r-- 1 root root 0 6月 26 11:29 8.txt -rw-r--r-- 1 root root 0 6月 26 11:29 9.txt 第三题,打印数组...: 写一个脚本让用户输入多个城市的名字(可以是中文),要求不少于5个,然后把这些城市存到一个数组里,最后用for循环把它们打印出来。.../bin/bash #这个脚本用来打印城市名字 #作者:*** #日期:2018-12-12 ​ read -p "输入不少于5个城市的名字,用空格分隔开。"...exit fi ​ for i in `seq 0 $[${#name[@]}-1]` do echo ${name[$i]} done ​ 第四题,判断某网站是否宕机: 写一个shell脚本,...| mailx -s "warning" username@163.com fi 第五题,检查某网站在线的主机: 写一个shell脚本,把192.168.75.0/24网段在线的ip列出来。

62730
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    shell脚本中的数组常见使用方式

    数组定义: shell中数组的定义是使用 小括号来表示的,其中数组元素之间用空格作为分隔,比如: $ a=(1 2 3 abcd China) 2. 数组的访问: a....获取数组元素的个数: 在上述获取所有元素的前面加上一个# 就可以了,如下: $ echo ${#a[*]} 5 3. 数组的修改: a....数组名称中含有shell变量: 当数组名称中含有shell变量的时候,此时随着shell变量的变化,那么引用的数组自然也就不同;此时可以通过如下的方式实现 变量的嵌套: 嵌套变量有两个符号,一个用来组合成完整的变量名称...,另一个用于 标记组合后的内容是一个变量,而后一个符号需要用 单引号括起来,剩余的部分需要用双引号括起来;然后用echo 来显示这个变量,但因为 单引号 引用的字符不会被shell解释,所以输出结果是单引号...a1,a2的值是不同的; $ i=1 $ eval echo '$'"{a$i[*]}" #此时 变量i=1, 所以显示的是数组变量a1的值; a b c $

    3.7K20

    《Shell脚本编程实战营》Shell脚本中变量的高级特性,如数组、关联数组等的使用

    引言 在Shell脚本编程中,变量是存储和操作数据的基础。掌握变量的高级特性,能让我们编写出更高效、灵活的脚本。本文将深入探讨Shell脚本中数组和关联数组等高级变量的使用。...Shell变量基础回顾 在深入高级特性之前,先简单回顾下基础变量。...在Shell中,定义变量无需声明类型,例如: name="John" echo $name 上述代码定义了一个名为name的变量并赋值为John,然后输出该变量的值。...数组的使用 数组定义与初始化 在Bash中,可以使用以下方式定义和初始化数组: # 方式一 fruits=("apple" "banana" "cherry") # 方式二 declare -a vegetables...3 获取数组所有元素: echo ${fruits[@]} # 输出 apple banana cherry 关联数组的使用 关联数组定义与初始化 关联数组使用字符串作为索引,需要先声明: declare

    35900

    Shell编程中关于数组作为参数传递给函数的若干问题解读

    最近在学习《Linux命令行和shell脚本编程大全》(第四版)这本书,对于自己遇到的问题以及通过搜索引擎和书籍中的解决方案进行一个案例的剖析,希望对于像我这样的初学者,有一个帮助。...结合python对于数组的切片处理来设想,arr[*] 中的*表示所有,即对数组arr进行所有元素的切片,而最后的结果其实是可以理解成将数组“剥去了外壳”,如:1 2 3 4 5 6。...3、 数组作为参数传递给函数的若干问题说明以下通过例子来说明传参数组遇到的问题以及原因:第一、关于$1 的问题[root@iZuf6gxtsgxni1r88kx9rtZ linux_cmd]# cat...2 将传参的数组用""包裹了起来,表示将整个参数当成一个字符串,这样内部的分隔符IFS无法对字符串内的空格起作用了,达到了传递整个数组的目的。...(echo ${myarray[*]}) 是将数组写成n1 n2 n3 n4 n5 ...的形式,如下:对函数传参数 $arg2形式:[root@iZuf6gxtsgxni1r88kx9rtZ linux_cmd

    2.6K10

    Ubuntu系统配置apache2.4的限速功能shell脚本分享

    这篇文章主要介绍了Ubuntu服务器配置apache2.4的限速功能shell脚本分享,本文直接给出脚本实现代码,代码相关原理都写在了注释里,需要的朋友可以参考下。...过程都写成脚本了,原理都写在注释里,大家懂的。一键操作就是sudo bash xxx.sh 代码如下: #!...mods-available目录放置所有可用的模块 sudo cp ratelimit.conf /etc/apache2/mods-available/ #mods-enabled目录放置所有已启用的模块...可有多个标签对不同的目录做设置。速度值不能是小数。...免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:zbxhhzj@qq.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容

    42410

    将恶意ip加入ssh黑名单的自动化shell脚本实现 - wuuconixs blog

    使得frps的日志文件里整页都是这些记录,让人看了十分害怕,当时我被迫暂停ssh的内网穿透服务,向这位骇客妥协了。 今天闲来无事,遂决定写一个脚本来自动ban这些恶意连接的ip。...实现过程 经过一些周折之后写完了以下shell脚本 #!...>> /root/frp_0.37.0_linux_386/autoban.log fi 其实现的主要功能主要是去读取frps的日志文件,查看最后三条记录,看它们是不是都是ssh请求,请求的时间是不是隔的特别近...写完了脚本,那我们怎么让它定时自动执行呢? 这里我用到了crontab这个强大的工具。...战术总结 通过这次实践熟悉了shell编程的强大之处、了解iptables命令的基本用法、了解crontab强大的定时执行功能 虽然好像今天没有恶意ip来连接我ssh了,测试都是用的我自己的手机2333

    1.1K20

    将恶意ip加入ssh黑名单的自动化shell脚本实现 2.0 - wuuconixs blog

    背景 之前写的AutoBan 1.0脚本在写好后的很长一段时间里都没什么人来爆破我的8022端口,以至于我觉得这种情况将一直持续下去。...,还是两个ip几乎交叉请求,我的自动ban脚本一代无能为力,同时还有一个不利因素,就是我之前因为没人来扫我,我就把脚本自动运行时间设置成了5分钟,也大大降低了脚本的威力。...了解到了类似grep '2021/08/02 15:10:[00-59]'的筛选用法和 grep -c的对结果的行数统计功能 了解到了date -d '1 minute ago' '+%M这种返回一分钟前的分钟数这种看似不可思议的究极智能的用法...了解到了grep 配合上管道符|,实现在将前一个grep的结果作为后一个grep的输入,实现多关键字匹配的问题。 了解到了awk命令里强大的内置函数,熟悉的substr, index,梦回c++。...了解了shell中遍历数组的两种方法 for ip in {ips[@]} 表示便利数组里的值,而 for ip in {!ipinfo[@]} 即在数组名前加上叹号,则表示遍历下标。

    1.2K30

    解释型语言-shell

    可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。 开发容易:可以在短时间内完成一个功能强大又妤用的脚本。 三、常见错误 报错:-bash: ....$# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $?...可以获取上一个命令的退出状态。所谓退出状态,就是上一个命令执行后的返回结果。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。...$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。...: 在Shell中,用括号来表示数组,数组元素用“空格”符号分割开。

    1.9K31

    Linux:进程替换

    ,然后再调用main函数的时候将argc参数传递给程序,其实就相当于是你在执行该程序之前,优先给你加载出来一个栈帧结构。...1.5.2 执行其他编译型语言或者是脚本语言       Shell脚本  本质上就是把Linux命令放在一个文件里面(后缀sh),并且文件的开头都是#!+脚本语言的解释器。   ...脚本语言不是脚本在跑,而是由解释器来解释执行 我们想要执行脚本文件的话,路径传的就不是脚本文件,而是脚本文件的解释器, bash+test.sh则是作为命令行参数。 ...(3)整体调用  printf具有字符串连接功能  2.2 交互问题——获取命令行 问题1:scanf并不使用于shell,因为他只能读取到空格,但是我们的命令大多数时候是需要带选项的!...,所以表里面存的是指针,本质上是一个指针数组, 所以我们如果将字符串信息保留在栈帧中,那么当被释放的时候就找不到这个环境变量了,因此我们必须单独维护一段空间  环境变量是你在shell启动的时候从用户目录底下的配置文件读取的

    1.3K10

    Shell【工具 01】Shc一个用于将Shell脚本编译成二进制可执行文件的工具(下载安装使用)

    Shc是一个用于将Shell脚本编译成二进制可执行文件的工具。通过编译,原始的Shell脚本文件会转变为一个二进制文件,这样其他用户就不能直接查看脚本的源代码,从而增加了脚本的保密性。...这种工具主要用于将Shell脚本部署在不允许存储敏感信息或代码的环境中,或者为了防止脚本被轻易修改。...-x cmnd: 添加一个执行命令,该命令在生成的二进制文件启动时将被执行。-l lopt: 设置编译脚本时的参数,即在运行时传递给脚本的参数。...-C: 在生成的C代码中包含注释,包括脚本的内容。-A: 在生成的C代码中包含数组,用于存储脚本的内容。-h: 显示帮助信息。最后的 -f script 用于指定要编译的Shell脚本文件的路径。...3.测试3.1 Shell脚本一个很简单用于测试的Shell脚本clear.sh:#!

    64800

    shell脚本编程之路3

    [TOC] 0x09 shell编程函数 描述:Bash(Bourne Again shell)也跟其他编程语言一样也支持函数,一般在编写大型脚本中需要用到,函数可以让我们将一个复杂功能划分成若干模块,...来获取执行的结果; shell中函数传参与脚本传参是一致的,但是得注意 $0 代表任然是父脚本的名称; 删除函数 描述:像删除变量一样,删除函数也可以使用 unset 命令,不过要加上 .f 选项,如下所示...WeiyiGeek.函数嵌套删除 0x09 shell脚本包含 描述:Shell文件包含像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本,也能在函数中进行调用外部变量 脚本包含...done 将调试功能设置为“on”来运行脚本:_DEBUG=on ..../script.sh 将需要调式的行前加上DEBUG,运行脚本前没有加_DEBUG=on就不会显示任何信息,脚本中“:”告诉shell不要进行任何操作。

    3.7K10

    命令行参数

    它的每一个属性,对应一段脚本。比如,build命令对应的脚本是node build.js。 原理 执行npm run ,会自动创建一个shell, 在这个shell里面执行指定的脚本命令。...比较特别的是, 这个shell 会自动将当前目录下的node_modules/.bin子目录加入PATH,执行结束, 再将PATH变量恢复原样 通配符 由于 npm 脚本就是 Shell 脚本,因为可以使用..."test": "tap test/\*.js" 传参 将命令行参数发送到npm脚本: npm run [command] [-- ] 注意必要的--,需要将参数传递到npm命令本身,并将其传递给脚本...[2] 编译环境中的几种传参方法[3] 参考资料 [1]npm scripts 使用指南: http://www.ruanyifeng.com/blog/2016/10/npm_scripts.html...: https://cloud.tencent.com/developer/ask/50047 [3]编译环境中的几种传参方法: https://crossjae.github.io/2018/01/14

    2.5K20

    起底Linux系统shell中那些特殊变量

    在Shell脚本中,$符号有多种含义,它通常用于表示变量、特殊变量或参数,今天介绍几个特殊的变量。 $0表示shell脚本文件本身 1 ~ n脚本的位置参数,表示脚本或函数的参数。...例如,1表示第一个参数,2表示第二个参数,依此类推 $#传递给脚本或函数的参数个数 $@传递给脚本或函数的所有参数的列表,每个参数是一个独立的单词 $?...表示后台运行的最后一个进程的进程ID $*表示所有传递给脚本的参数列表(位置参数),并将它们作为一个单词显示 $-用于显示当前Shell的选项设置 当运行 echo $- 时,它会输出一个包含不同字母的字符串...i: 启用Shell的交互模式。 m: 启用作业控制的多用户模式。 B: 启用通知作业完成状态的功能。 H: 启用Shell历史功能。...,可能更适合使用"$@",它以类似数组的方式表示传递给脚本的所有参数。

    39210

    Shell编程-函数

    从简单来说,他就是Shell编程,只有由于命令比较单一,只能实现比较简单的功能。如果我们把多个操作都放到一起去,并添加更复杂的逻辑在里面,他就是Shell编程。...总不能使用几十个选项和几十个脚本吧,这里引入一个函数的概念,可以把某些具体的功能,封装成功一个函数,有点类似一个单独的脚本,然后再引用。...在Shell脚本中,函数(Functions)允许您组织和重复使用代码片段,以及将复杂任务分解为更小的模块。函数可以带有参数,可以返回值,提供了一种封装和抽象代码的方式。...,后面的1,就是运行该程序的时候传递给它的参数,如果不传参数,这个程序会运行失败。...比如我们在Shell编程-for循环打印的99乘法表,如果我们要打印一个其他乘法表,则需要修改代码,但是通过局部变量的我们把乘法表封装在函数内部,只要在运行函数的时候传递给他对应的参数,就可以打印任何乘法表

    28610
    领券