`
huoyj
  • 浏览: 89400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Linux脚本收集

 
阅读更多

1.遍历目录
#!/bin/bash

files=`ls`  #$(ls)
fs=($files) #($files)是将字符串分割填充到数组
fssize=${#fs[*]}

for ((i=0;i<fssize;i++))
do
echo ${fs[i]}
done

2.各种括号的用法
${a} 变量a的值, 在不引起歧义的情况下可以省略大括号.
$(cmd) 命令替换, 结果为shell命令cmd的输出, 和`cmd`效果相同, 不过某些Shell版本不支持$()形式的命令替换, 如tcsh.
$((exp)) 和`expr exp`效果相同, 计算数学表达式exp的数值, 其中exp只要符合C语言的运算规则即可, 甚至三目运算符和逻辑表达式都可以计算.
(cmd1;cmd2;cmd3) 新开一个子shell顺序执行命令cmd1,cmd2,cmd3, 各命令之间用分号隔开, 最后一个命令后可以没有分号.
{ cmd1;cmd2;cmd3;} 在当前shell顺序执行命令cmd1,cmd2,cmd3, 各命令之间用分号隔开, 最后一个命令后必须有分号, 第一条命令和左括号之间必须用空格隔开.

对{}和()而言, 括号中的重定向符只影响该条命令, 而括号外的重定向符影响到括号中的所有命令.

(element1,element2,element3) 用于初始化数组.

{xxx,yyy,zzz...} 大括号扩展,如: 

cat {file1,file2,file3} > combined_file # 把file1,file2,file3 连接在一起,并且重定向到combined_file中.  

cp file22.{txt,backup} # 拷贝"file22.txt" 到"file22.backup" 中

注意:  在大括号中,不允许有空白,除非这个空白是有意义的.

 

一个命令可能会对大括号中的以逗号分割的文件列表起作用[1]. file globbing 将对大括号中的文件名作扩展.

 

 

(()) 增强括号的用法, 常用于算术运算比较. 双括号中的变量可以不使用$符号前缀, 只要括号中的表达式符合C语言运算规则, 支持多个表达式用逗号分开.
比如可以直接使用for((i=0;i<5;i++)), 如果不使用双括号, 则为for i in `seq 0 4`或者for i in {0..4}.
再如可以直接使用if (($i<5)), 如果不使用双括号, 则为if [ $i -lt 5 ].
[ $UID -eq 10 ] 比较命令,用于条件测试,
[[ $UID -eq 0 && $USER -eq root ]] 增强型比较命令,双括号中的表达式可以使用&&, ||, <, >等C语言语法.
比如可以直接使用if [[ $a != 1 && $a != 2 ]], 如果不适用双括号, 则为if [ $a -ne 1] && [ $a != 2 ]或者if [ $a -ne 1 -a $a != 2 ].

 

3.&&和||

cmd1&&cmd2&&cmd3... 当cmd1的结果为0(即执行正确时)执行cmd2,以此类推。

如:echo -n "hello "&&echo "world"

cmd1||cmd2||cmd3... 当cmd1的结果为非0(即执行错误时,cmd1已执行)执行cmd2,以此类推。

如:[ 0 -eq 0 ]||echo "OK!" #不输出OK! ,如果是[ 0 -eq 10 ]&&echo "OK!"会输出OK! 

 

4.关于脚本开头的#!/bin/bash

脚本开头的#!/bin/bash是指定一个解释器,实际上#!是一个2字节的魔法数字,是文件类型的特殊标记,魔法数字可以通过man magic查看更详细的解释,在file命令中魔法数字可以用来检查文件类型,查看man file,文件类型按照三种方式来检查,以此顺序:文件系统,魔法数字,语言;

 

(1).文件系统检查是建立在对 stat(2) 系统调用结果的分析上的. 

(2).幻数检查用来检查文件中是否有特殊的固定格式的数据.文件在文件开始部分附近的一个特殊位置保存有一个'幻数' , 通过幻数告诉UNIX 操作系统此文件是二进制可执行文件, 和其中包含的

其它类型. 幻数的概念已经扩展到数据文件.任何在文件固定位置有与文件类型相关的不变标识符的文件都可以这样表示. 这些文件中的信息可以从幻数文件 /usr/share/magic 中读取.

(3).如果文件为 ASCII 文件, file 会试图检查它的语言. 语言检查在文件开始的几个块中(任意位置)查找是否有特殊字符串(参看 names.h) .br 指出此文件很可能是 troff(1) 输入文件, 而关键字 struct 指出此文件是C程序. 语言检查不如前两组检查可靠,所以放在最后执行.

 

当然"#!" 也可以被忽略,不过这样你的脚本文件就只能是一些命令的集合,不能够使用shell 内建的指令了,如果不能使用变量的话,当然这也就失去了脚本编程的意义了. 

如果在脚本的里边还有一个#!行,那么bash将把它认为是一个一般的注释行.

小技巧:

1).自动删除自己的脚本,后面的都不会执行

 

1 #!/bin/rm 
2 # 自删除脚本.
3 # ls  #不会执行的代码

 你还可以试试在一个README 文件的开头加上#!/bin/more, 并让它具有执行权限. 结果将是文档自动列出自己的内容.

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    shell 常用脚本收集

    Shell 常用脚本收集 本文收集了一些常用的 Shell 脚本,涵盖了批量删除已安装程序、重启服务程序、日志切割、资源同步和错误监控等多个方面。这些脚本可以帮助开发者和运维人员快速解决一些常见的问题,提高工作...

    linux性能监控脚本

    在Linux中,我们可以使用`netstat`、`iptables`或者`tcpdump`等命令来获取网络流量信息,但编写脚本可以更方便地自动化这一过程,定期收集数据。通过分析网络流入和流出的数据,你可以识别可能的带宽瓶颈,或检测...

    linux常用脚本

    这个脚本收集了系统的一些关键信息,如CPU利用率(使用`top`命令),内存使用情况(`free -m`),磁盘空间(`df -k`)以及特定IP的连接数(`netstat -na`)。所有信息被写入到临时文件中,便于进一步分析或报警。 ...

    vtstscripts.tgz 脚本资源下载linux

    【vtstscripts.tgz 脚本资源下载Linux】是一个针对Linux系统的脚本资源包,主要服务于Linux运维人员和服务器管理人员。这个压缩包文件包含了多个用于系统管理、自动化任务执行和故障排查的脚本,旨在提升Linux环境的...

    linux上脚本安装

    在Linux系统中,脚本安装是一种自动化安装和配置软件的常用方法,特别是在批量部署或需要高效运维的场景下。本文将详细讲解如何使用Shell脚本来安装`node.js`、`zabbix-agent`、PHP插件,以及配置时间同步和文件实时...

    Linux_脚本.txt

    这种交互式的方式是脚本编写中常见的需求,可用于收集必要的数据或参数。 #### 3. 变量与表达式 变量在脚本中用于存储和操作数据。例如,`Count`变量被用来追踪记录的编号,每次运行脚本时都会自增。此外,使用了...

    linux-ConfigLinux配置Linux服务器的自动化脚本

    "Linux-ConfigLinux配置Linux服务器的自动化脚本"提供了实现这一目标的有效工具,旨在通过脚本化的方式提高命令行效率,减少人为干预,提升运维的稳定性和效率。下面我们将深入探讨Linux自动化脚本的关键知识点。 ...

    中北大学操作系统云沙箱实验报告-使用Shell脚本实现局域网MAC地址收集和FTP服务监控

    实验报告“中北大学操作系统云沙箱实验报告-使用Shell脚本实现局域网MAC地址收集和FTP服务监控”详细介绍了如何通过Shell脚本在Linux操作系统中管理和监控局域网内的设备。实验主要分为三个部分:FTP服务器的部署、...

    linux系统巡检脚本

    本脚本是用于rhel centOS 等linux系统巡检使用的脚本,适用于大批量的操作,对操作系统 性能资源 安装软件 网络配置信息 日志信息 硬件信息 主机配置信息的收集,生成文件到/tmp/data/目录下

    linux日常巡检脚本

    本篇将详细介绍一个基于Linux的日常巡检脚本及其重要知识点。 首先,巡检脚本通常包括以下几个核心部分: 1. **系统资源监控**:通过`top`、`htop`或`ps`命令检查CPU使用率、内存占用、磁盘I/O以及网络流量等关键...

    Linux常用的系统监控shell脚本

    ### Linux常用的系统监控Shell脚本知识点解析 在Linux系统管理中,使用Shell脚本来监控系统的运行状态是一种常见且有效的手段。下面将详细解析几个典型的Linux系统监控Shell脚本,涵盖网络流量监控、CPU与内存使用...

    Linux 脚本部署 Kubernetes

    在IT行业中,Kubernetes(简称k8s)已经成为容器编排的首选平台,而Linux脚本则常用于自动化复杂的系统管理任务。在这个“Linux脚本部署Kubernetes”的主题中,我们将深入探讨如何利用kubeadm工具通过脚本来实现...

    通过python脚本收集系统信息

    通过python脚本收集系统信息,主要包括以下脚本,值的下载: 1-CPU信息 2-内存信息 3-系统用户及启动时间 4-硬盘使用率采集 5-生成磁盘使用情况的日志文件 6-网络流量采集 7-计算所有进程所占用内存大小之和 8-检查...

    linux-日报周报月报生成脚本

    在IT行业中,自动化任务...通过shell脚本技术,它能够收集和整理git提交历史,生成直观的文本报告,方便团队成员了解项目进度和每个人的工作贡献。对于任何经常需要编写工作汇报的开发者来说,这是一个非常实用的工具。

    python Linux-IO分析代码脚本.docx

    《Python/Linux IO分析代码脚本详解》 在运维工作中,监控Linux服务器的IO性能是至关重要的任务,这有助于我们及时发现并解决系统瓶颈,优化服务器性能。本文将详细介绍一个使用Python编写的脚本,该脚本可以分析...

    Linux巡检脚本,方便、快捷、安全

    巡检脚本是实现这一目的的有效工具之一,它能够自动化收集系统的多项关键指标,帮助管理员快速定位问题并作出相应的处理。 #### 二、脚本功能解析 根据提供的Linux巡检脚本内容,我们可以将其主要功能分为以下几个...

    系统运维+zabbix+zabbix客户端+zabbix客户端脚本(linux方向)

    在这个主题中,我们将深入探讨Linux环境下Zabbix客户端的安装和配置过程,以及相关的脚本使用。 首先,我们要理解Zabbix客户端的安装文件和脚本。在提供的压缩包"zabbix3.0"中,包含了用于Linux系统的Zabbix安装...

    日志收集脚本自动化脚本

    日志收集脚本自动化脚本

    Linux_shell脚本入门教程.pdf

    ### Linux Shell脚本入门教程知识点概述 #### 一、Shell编程的重要性与应用场景 - **重要性**: 在Linux系统中,虽然存在多种图形界面工具,但Shell作为一种强大的编程语言,能够提供更加灵活的功能支持。Shell不仅...

Global site tag (gtag.js) - Google Analytics