shell脚本

shell 脚本的函数参数

耗尽温柔 提交于 2019-12-05 16:38:51
$# 表示提供到shell脚本或者函数的参数总数; $1 表示第一个参数。 -ne 表示 不等于 另外: 整数比较 -eq 等于,如:if ["$a" -eq "$b" ] -ne 不等于,如:if ["$a" -ne "$b" ] -gt 大于,如:if ["$a" -gt "$b" ] -ge 大于等于,如:if ["$a" -ge "$b" ] -lt 小于,如:if ["$a" -lt "$b" ] -le 小于等于,如:if ["$a" -le "$b" ] < 小于(需要双括号),如:(("$a" < "$b")) <= 小于等于(需要双括号),如:(("$a" <= "$b")) > 大于(需要双括号),如:(("$a" > "$b")) >= 大于等于(需要双括号),如:(("$a" >= "$b")) 来源: https://www.cnblogs.com/metooli/p/11933694.html

shell示例4

假如想象 提交于 2019-12-05 16:25:56
Table of Contents 编写脚本,接受二个位置参数,magedu 和/www,判断系统是否有 magedu,如果没有则自动创建 magedu 用户,并自动设置家目录为/www #!/bin/bash # 判断是否传入两个参数 [ $# -ne 2 ] && echo $# && exit 1 # 判断是否用户存在 if ! `id $1 &> /dev/null`;then useradd -d /www $1 else echo "user: $1 is existed!" fi 使用 expect 实现自动登录系统。 分析 确定登录信息 ip 端口 密码 发起 ssh 进程 应答 ssh 的登录提示 代码 #!/usr/bin/expect # 设置登录的变量 set IP 192.168.10.6 set PORT 22 set PASS 123456 # ssh登录并应答 spawn ssh root@$IP -p $PORT expect { "yes/no" { send "yes\n";exp_continue} "password" { send "$PASS\n"} } interact 来源: https://www.cnblogs.com/chaoyiyang/p/11933056.html

使用ping网络工具编写Shell脚本程序实现网络连接故障初步排查

邮差的信 提交于 2019-12-05 15:05:22
在学习ping命令的时候,突发奇想:为何不使用ping命令对网络连接故障进行排查? 具体思路: 1. ping 127.0.0.1 (虚拟网卡地址)以检查主机的TCP/IP协议栈是否正常。 2. ping [网络号] 以广播的形式向局域网发送数据包,检查主机网卡、modem、路由器(网关)是否正常。 3. nslookup www.baidu.com 检查DNS服务是否正常。 4. ping www.58.com 查看能否连网。 以下是shell代码内容(含解析): 1 #4 times,time out = 10 s; 2 ping -c 4 -w 10 127.0.0.1 #-c表示发送数据包次数(4次),-w表示超时时间(10s),127.0.0.1表示虚拟网卡地址(回环地址) 3 if [ "$?" != 0 ];then #如果回环测试不成功成功,变量 $s 为0表示上一个指令执行成功。这里注意[]内的三个组件之间要有空格,变量要用""。 4 echo "ping fail! TCP/IP Stack is not ready!\a\n"  #回环测试失败,说明TCP/IP协议栈有问题    5 exit 0                                #退出脚本执行 6 else 7 echo "TCP/IP is ok !\a\n"         

Shell学习(二)Shell变量

北慕城南 提交于 2019-12-05 14:46:37
一、 Shell变量 变量的定义 例子: my_job="Learn Shell"    PS: 变量名和等号之间 不能有空格 !!! 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字)。 变量的使用   使用一个定义过的变量,只要在 变量名前面加美元符号 即可。 #定义变量 my_name="zh" #使用变量(建议加上花括号区分变量边界) echo $my_name #使用变量【推荐形式】 echo ${my_name} 设置变量只读   使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。 #定义变量 myUrl="www.cnblogs.com/riches" #将变量设置为“只读”状态 readonly myUrl 删除变量   使用 unset 命令可以删除变量。语法: #删除变量 unset myUrl 变量类型 局部变量 :局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。 环境变量 :所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 shell变量

shell脚本

泄露秘密 提交于 2019-12-05 11:49:57
1、命令解释器 内核与用户之间的交互 负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。 /etc/shells可以查看当前系统支持的shell脚本类型 2、编程规范 指定解释器的类型 例: 说明 例: 然后再写命令 编写好一个shell脚本first.sh后是无法直接通过./first.sh来执行的,没有X权限 但是可以通过指定某个shell来解释脚本语句,或者通过内部命令source(或点号”.”)来加载文件中的源代码执行。 执行 3、shell中常用的操作 (1)搭配管道符操作 其中$代表以/bin/bash结尾的 以某个字段开头可以"^root" awk -F: 是指以:分隔,没有这个参数则是默认的以空格分隔 (2)搭配重定向操作 举例: 创建用户并设置密码 -stdin 标准输入 可将输出内容输出到空文件 /dev/null (黑洞文件)中 就不会提示 4、脚本变量 常见shell变量的类型包括自定义变量、环境变量、位置变量、预定义变量。 set查看定义的变量 unset 取消变量 readonly 变量名 设置只读变量,unset不能删除只读变量 定义新的变量并查看 如果除了输出变量还要输出其他内容可用"{}"将变量括起来 如果不加{}则会认为是abchaha这个变量 (1)赋值变量特殊操作 (a)""双引号 界定字符串

Shell脚本

允我心安 提交于 2019-12-05 11:36:20
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接: https://app.yinxiang.com/shard/s17/nl/19391737/e1007d5a-4ec0-4ee7-98a0-e82989f0bffb mkdir touch newFile 或 vim newFile chmod 755 newFile rm -rf newFile sudo sh -c find / -name kb-core which bash bash特殊字符上 ; 可以在同一行上写两个或者两个以上的命令 ;; 双分号可以用于终止case选项 ' '单引号',直接认为变量只是一个字符,将会阻止STRING中所有特殊字符的解释 " "双引号",变量引用时,还是显示变量的值,将会阻止(解释)STRING中大部分特殊的字符 / 斜线/,表示路径符,/bin/bash,多个/或者//,////bin/////bash 表示的含义于单斜线含义相同, \ 反 斜线,表示转义符号,\n ,\',\", ` 反序号,反序号的命令会被优先执行;cp `mkdir back` test.sh back,表示先创建back文件夹再将test.sh拷贝到back目录下; : 冒号,一个什么都不做的命令,等价于shell中的true, while : do echo

Ubuntu18.04初始化

佐手、 提交于 2019-12-05 09:36:14
Ubuntu18.04初始化 更新源: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo gedit /etc/apt/sources.list deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic

shell 基本语法

喜夏-厌秋 提交于 2019-12-05 09:27:58
shell 基本语法 jenkins 上构建项目时,经常需要借助 shell 脚本,最近也经常跟服务器打交道,顺便记录些常用命令,方便查阅 语法-变量 # 定义变量 name='dasu' # 使用变量 echo $name # dasu echo "I am ${name}." # I am dasu. xxx='dasu' 用 key=value 形式定义变量, = 等号两边不能有空格 $xxx 或 ${xxx} 变量名前加个 $ 使用变量,大括号省略也可以 语法-字符串 # 字符串使用 name='dasu' name2="dasu" name3=dasu echo "$name $name2 $name3" # dasu dasu dasu # 字符串长度 echo ${#name} #4 # 注意,shell 里都是命令 'dasu' # dasu: command not found # 获取子字符串 echo ${name:0:2} # da # 寻找字符 echo `expr index $name s` # 3 下标从1开始 'dasu' "dasu" dasu 单引号 、 双引号 、甚至 不加引号 都会被作为字符串使用 单引号里的字符串不做任何处理工作,是什么就原样输出 双引号里如果有表达式、有转义符,有变量,会先进行处理,最后再输出,所以字符串的拼接

Ansible ad-hoc 手册(3)

徘徊边缘 提交于 2019-12-05 09:26:18
Ansible ad-hoc 什么是ad-hoc? ad-hoc简而言之就是“临时命令”,执行完即结束,并不会保存 ad-hoc模式的使用场景 比如在多台机器上查看某个进程是否启动,或拷贝指定文件到本地,等等 ad-hoc模式的命令使用  #批量查看磁盘信息 [root@m01 ~]# ansible web_group -m command -a 'df -h' -i ./hosts web02 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 18G 1.1G 17G 6% / devtmpfs 981M 0 981M 0% /dev tmpfs 992M 0 992M 0% /dev/shm tmpfs 992M 9.5M 982M 1% /run tmpfs 992M 0 992M 0% /sys/fs/cgroup /dev/sda1 1014M 124M 891M 13% /boot tmpfs 199M 0 199M 0% /run/user/0 web01 | CHANGED | rc=0 >> 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda3 18G 1.1G 17G 6% / devtmpfs 981M 0 981M 0% /dev tmpfs 992M 0 992M 0% /dev/shm

shell编程之流程控制

与世无争的帅哥 提交于 2019-12-05 09:11:19
流程控制 条件比较 文件/目录判断 # 常用的: [ -a FILE ] 如果 FILE 存在则为真。 [ -d FILE ] 如果 FILE 存在且是一个目录则返回为真。 [ -e FILE ] 如果 指定的文件或目录存在时返回为真。 [ -f FILE ] 如果 FILE 存在且是一个普通文件则返回为真。 [ -r FILE ] 如果 FILE 存在且是可读的则返回为真。 [ -w FILE ] 如果 FILE 存在且是可写的则返回为真。(一个目录为了它的内容被访问必然是可执行的) [ -x FILE ] 如果 FILE 存在且是可执行的则返回为真。 # 不常用的: [ -b FILE ] 如果 FILE 存在且是一个块文件则返回为真。 [ -c FILE ] 如果 FILE 存在且是一个字符文件则返回为真。 [ -g FILE ] 如果 FILE 存在且设置了SGID则返回为真。 [ -h FILE ] 如果 FILE 存在且是一个符号符号链接文件则返回为真。(该选项在一些老系统上无效) [ -k FILE ] 如果 FILE 存在且已经设置了冒险位则返回为真。 [ -p FILE ] 如果 FILE 存并且是命令管道时返回为真。 [ -s FILE ] 如果 FILE 存在且大小非0时为真则返回为真。 [ -u FILE ] 如果 FILE 存在且设置了SUID位时返回为真