shell脚本

认识BASH

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-13 16:34:07
管理整个计算机硬件其实是操作系统的核心,这个核心是需要保护的,所以我们一般使用者就只能通过shell来跟核心沟通,那么系统到底有多少shell呢,为什么我们要使用bash啊,下面来谈一谈。 1.硬件,核心,与shell 这应该是个蛮有趣的话题: “什么是 Shell ”?相信只要摸过计算机,对于操作系统 (不论是 Linux 、 Unix 或者是 Windows) 有点概念的朋友们大多听过这个名词,因为只要有“操作系统”那么就离不开 Shell这个东西。不过,在讨论 Shell 之前,我们先来了解一下计算机的运行状况吧! 举个例子来说:当你要计算机传输出来“音乐”的时候,你的计算机需要什么东西呢? 1). 硬件:当然就是需要你的硬件有“声卡芯片”这个配备,否则怎么会有声音 2). 核心管理:操作系统的核心可以支持这个芯片组,当然还需要提供芯片的驱动程序啰; 3). 应用程序:需要使用者 (就是你) 输入发生声音的指令啰 这就是基本的一个输出声音所需要的步骤!也就是说,你必须要“输入”一个指令之后, “硬件”才会通过你下达的指令来工作!那么硬件如何知道你下达的指令呢?那就是 kernel (核心) 的控制工作了!也就是说,我们必须要通过“ Shell ”将我们输入的指令与 Kernel 沟通,好让 Kernel 可以控制硬件来正确无误的工作! 操作系统其实是一组软件

shell编程tips

爱⌒轻易说出口 提交于 2020-01-13 14:15:04
https://www.linuxprobe.com/shell-script-variable.html 系统变量 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2 $? 上个命令的退出状态,或函数的返回值。成功返回0,失败返回1 $# 传递给脚本或函数的参数个数 $* 所有这些参数都被双引号引住。若一个脚本接收两个参数,$*等于$1$2 $0 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径 $@ 被双引号(” “)包含时,与 $* 稍有不同。若一个脚本接收到两个参数,$@等价于$1$2 $$ 当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID $! 前一个后台命令的进程号 文件或目录判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目录,则为真 -e file 若文件存在,则为真 -f file 若文件存在且是一个规则文件,则为真 -g file 若文件存在且设置了SGID位的值,则为真 -h file 若文件是软链接,则为真 -k file 若文件存在且设置了”sticky”位的值 -L file 若文件为符号链接,则为真 -p file 若文件存在且为一已命名管道,则为真 -r

shell 脚本调试

。_饼干妹妹 提交于 2020-01-13 11:00:50
调试功能是每一种编程语言都应该实现的重要功能之一,当出现一些始料未及的情况时,用它来生成脚本运行信息。调试信息可以帮助你弄清楚是什么原因使得程序发生崩溃行为异常。 1.bash -x 脚本.sh (使用-x选项,启动shell脚本的跟踪调试功能) [root@gitlab script]# bash -x script.sh   例如: [root@gitlab script]# bash -x sys.sh ++ ifconfig ens33 ++ grep inet ++ awk '{print $2}' ++ cut -f 2 -d : + IP=192.168.160.130 sys.sh:行5: 寻找匹配的 ``' 是遇到了未预期的文件结束符 sys.sh:行11: 语法错误: 未预期的文件结尾   这样就很容易知道是哪里出了问题 2.shebang来进行调试 把shebang从#!/bin/bash改成#!/bin/bash -xv,这样一来,不需要任何其他选项就可以启动调试功能 效果同上 来源: https://www.cnblogs.com/dgshubo/p/12186053.html

hadoop shell 详解

偶尔善良 提交于 2020-01-12 16:38:46
概述 所有的hadoop命令均由bin/hadoop脚本引发。不指定参数运行hadoop脚本会打印所有命令的描述。 用法: hadoop [--config confdir] [COMMAND] [GENERIC_OPTIONS] [COMMAND_OPTIONS] Hadoop有一个选项解析框架用于解析一般的选项和运行类。 命令选项 --config confdir 覆盖缺省配置目录。缺省是${HADOOP_HOME}/conf。 GENERIC_OPTIONS 多个命令都支持的通用选项。 COMMAND 命令选项 各种各样的命令和它们的选项会在下面提到。这些命令被分为 用户命令 管理命令两组。 常规选项 下面的选项被 dfsadmin, fs, fsck和 job支持。 应用程序要实现 Tool来支持 常规选项。 GENERIC_OPTION 描述 -conf <configuration file> 指定应用程序的配置文件。 -D <property=value> 为指定property指定值value。 -fs <local|namenode:port> 指定namenode。 -jt <local|jobtracker:port> 指定job tracker。只适用于job。 -files <逗号分隔的文件列表> 指定要拷贝到map reduce集群的文件的逗号分隔的列表

SHELL脚本-第五课

☆樱花仙子☆ 提交于 2020-01-12 15:10:49
SHELL脚本-第五课 回顾 访问变量 内部变量 参考资料 回顾 区分了单引号和双引号的区别; 了解了更多的转义字符; 退出时的状态。 访问变量 变量使用得当,可以使脚本变得更加强大和有弹性。 内部变量 $BASH :Bash二进制程序文件的路径; $BASH_ENV :该环境变量保存一个Bash启动文件路径,当启动一个脚本程序时会去读该环境变量指定的文件; $BASH_SUBSHELL :一个指示子shell(subshell)等级的变量; $BASH_VERSINFO[n] :这个数组含有6个元素,指示了安装的Bash版本的信息。它和$BASH_VERSION相似,但它们还是有一些小小的不同; #!/bin/bash for n in 0 1 2 3 4 5 do echo "BASH_VERSINFO[ $n ] = ${BASH_VERSINFO[$n]} " done exit 0 运行结果如下: $ ./5-2-BashVersifo.sh BASH_VERSINFO[0] = 3 # 主版本号. BASH_VERSINFO[1] = 2 # 次版本号. BASH_VERSINFO[2] = 57 # 补丁级. BASH_VERSINFO[3] = 1 # 编译版本. BASH_VERSINFO[4] = release # 发行状态. BASH_VERSINFO[5]

shell基础

╄→гoц情女王★ 提交于 2020-01-12 14:02:25
shell脚本基础 1)什么是脚本:一个可以执行的文件,运行可以带来某种功能 2)规范shell脚本组成 #!环境声明 //默认/bin/bash #注释文本 可执行代码 3)管道传递 | 4)屏幕输出文本的类别 标准输出(1):命令行执行正常的显示结果 标准错误(2):命令行执行出错或异常时的显示结果 5)重定向输出 > //将前面命令的正确输出进行重定向 2> //将前面命令的错误输出进行重定向 &> //将前面命令的正确和错误输出进行重定向 1>&2 //同 >&2 , 将命令行的标准输出编程标准错误 6)单引号 ’ ’ //取消所有特殊字符的含义 变量: 以不变的名称存放可能会变化的值 变量名=变量值 1)方便以固定名称重复使用某个值 2)提高对任务需求运行环境变化的适应能力 read 1)产生交互 2)记录输入 3)将输入赋值给一个变量 // read 变量名 read -p '屏幕输出信息' 变量 //用于给出提示符 定义/赋值变量注意事项 若指定变量名已存在,相当于为变量重新赋值 等号两边没有空格 变量由字母 /数字/下划线组成,区分大小写 不能以数字开头 引用变量 $变量名 ${变量名} 条件测试 [ 测试表达式 ] 常用的测试选项: ! //反义 [ ! -f /etc/passwd ] 1) 检查文件状态: -e //存在为真 -d //存在且是目录为真 -f

shell编程之函数定义及使用

不羁岁月 提交于 2020-01-12 07:40:59
一.函数定义 #!/bin/sh #func1.sh hello() ##函数定义 {   echo "Hello there today's date is 'date +%Y-%m-%d' "   #return 2 ###返回值其实是状态码,只能在[0-255]范围内 } echo "now going to the function hello" hello #echo $? 获取函数的return值 echo "back from the function" 函数调用:function hello() 或 function hello 或 hello 注意:1.必须在调用函数地方之前,先声明函数,shell脚本是逐行运行,不会像其它语言一样先预 编译    2.函数返回值,只能通过$?系统变量获得,可以显示加:return返回,如果不加,将以最后 一条命令运行结果,作为返回值。return后跟数值n(0-255) 脚本高度:sh-vx helloWorld.sh或者在脚本中增加set -x 二.函数参数 #!/bin/bash #fun1.sh funWithParam(){   echo "第一个参数为 $1!"   echo "第二个参数为 $2!"   echo "第十个参数为 $10!"   echo "第十个参数为 ${10}!"   echo "第十一个参数为

python了解

╄→гoц情女王★ 提交于 2020-01-12 00:16:21
python的发展背景   Python的作者,Guido von Rossum(吉多·范·罗苏姆,中国Python程序员都叫他 龟叔),荷兰人。1982年,龟叔从阿姆斯特丹大学获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,虽然拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的事情。   在那个时候,龟叔接触并使用过诸如汇编语言、C等编程语言。这些语言的基本设计原则都是让机器能更快运行。在80年代,虽然IBM和苹果已经掀起了个人电脑浪潮,但这些个人电脑的配置很低,一个大的数组就能占满内存。所有的编译器的核心是做优化,以便让程序能够运行。 python发展背景续   这种编程方式让龟叔感到苦恼。龟叔知道如何用C语言写出一个功能,但整个编写过程需要耗费大量的时间,即使他已经准确的知道了如何实现。他的另一个选择是shell。Bourne Shell作为UNIX系统的解释器已经长期存在。UNIX的管理员们常常用shell去写一些简单的脚本,以进行一些系统维护的工作,比如定期备份、文件系统管理等等。shell可以像胶水一样,将UNIX下的许多功能连接在一起。许多C语言下上百行的程序,在shell下只用几行就可以完成。然而,shell的本质是调用命令。它并不是一个真正的语言。比如说

SHELL脚本编程生产案例

拈花ヽ惹草 提交于 2020-01-11 22:38:42
Shell脚本编程 基础 编写脚本 backup.sh,可实现每日将/etc/目录备份/backup/etcYYYY-mm-dd中 #!/bin/bash cp -av /etc/ /data/etc\ ` date +%F ` 编写脚本 hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提示用户“该IP地址不可访问” #!/bin/bash ping -w3 -c3 $1 & > /dev/null && echo "该IP地址可访问" || echo "该IP地址不可访问" 编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%,就发广播警告空间将满 #!/bin/bash CHECKDISK = ` ( df ; df -i ) | egrep "^/dev/sda" | tr -s ' ' % | cut -d '%' -f5 | sort -nr | head -1 ` [ $CHECKDISK -gt 80 ] & > /dev/null && echo "磁盘空间或节点编号空间已达到80%" | mail -s "空间已满" root 编写脚本 per.sh,判断当前用户对指定参数文件,是否不可读并且不可写 #!/bin/bash [ !

【转载】shell基础知识

a 夏天 提交于 2020-01-11 18:33:03
变量的定义: a=1 b=hello c="hello world !" d='hello "反启" !' e=`ls` (注意:这是反引号)   备注:=号左右不能有空格;如果内容有空格需要使用单引号或者双引号;双引号支持转译 $开头的变量会被自动替换 变量替换:   ${value:-word}:如果变量名存在且非null,返回变量值;否则,返回word字符串   用途:如果变量未定义,则返回默认值   ${value:=word}:如果变量名存在且非null,返回变量值;否则,设置这个变量值为word   用途:如果变量未定义,,则设置变量为默认值,并返回默认值   ${value:?"not defined"}:如果变量名存在且非null,返回变量值;否则显示“not defined”,并退出当前命令或脚本。   用途:用于捕捉由于变量未定义而导致的错误,并退出程序。   ${value:+word}:如果变量名存在且非null,返回word,否则返回null。   用途:测试变量是否存在。 变量的使用:   echo $a   echo ${a}   echo "$a"   备注:使用$var 或 ${var}来访问变量,后者更为严谨,$var_x和${var}_x是不同的;变量不需要定义也可以使用,引用未定义的变量,默认为空值。 预定义变量: echo $USER