cat dis-sshkey.sh
#!/bin/sh . /etc/init.d/functions [ ! -f iplist ] && echo "hostlists.txt is not exist." && exit 1 for host in `cat /home/oldgirl/iplist` do expect expect-copy-sshkey.exp $host &>/dev/null if [ $? -eq 0 ];then action "$host dis data" /bin/true else action "$host dis data" /bin/false fi done mkpasswd openssl mkpasswd -l 10 -c 3 -C 3 -d 3 openssl rand -base64 80 basename dirname basename /etc/init.d/network network dirname /etc/init.d/network/etc/init.d
shell脚本 脚本第一行指定脚本解释器
#!/bin/sh #!/bin/bash #! /usr/bin/awk #! /bin/sed #! /usr/bin/tclsh #! /usr/bin/expect #! /usr/bin/perl #! /usr/bin/env Python 脚本注释单行注释 #
多行注释
主脚本
模块(子脚本)
主脚本 调用模块
模块中 有 函数
先调用模块,再调用函数
脚本执行参数-x 将执行的脚本内容及输出显示到屏幕上
-n 不会执行该脚本,仅查询脚本语法是否有问题,并给出错误提示。
-v 在执行脚本时,先将脚本的内容输出到屏幕上然后执行脚本,如果有错误,也会给出错误提示
变量 变量类型 自定义变量1.定义变量变量名=变量值 ,不允许数字命名, 不能使用横岗命名
2.引用变量$变量名 或 ${变量名}
3.查看变量echo $变量名 set显示所有变量,包括自定义变量和环境变量
系统环境变量
1.定义环境变量 export export 变量 ,将自定义变量转换成环境变量
2.引用环境变量 $变量名 或 ${变量名}
3.查看环境变量 echo $变量名 env |grep Name
4.取消环境变量 unset 变量名
5.作用范围在当前shell和子shell有效
$1
$2
$3
预先定义变量
$0 脚本文件名
$* 所有的参数
$@ 所有的参数
$# 参数的个数
$$ 当前进程的 PID
$! 上一个后台进程的 PID
$? 上一个命令的返回值 0 表示成功
变量赋值方式
1.显式赋值(变量名=变量值) 2.read从键盘读入变量值 read -p "请输入数字:" echo $REPLY 3.定义或引用变量时注意事项: " "弱引用 ' '强引用 4.``命令替换等价于$()反引号中的shell命令会被先执行 变量子串变量长度
${#string}从前往后删除变量内容
${string#substring} 从变量$string开头开始删除最短匹配$substring子串 ${string##substring} 从变量$string开头开始删除最长匹配$substring子串从后往前删除变量内容
${string%substring} 从变量$string结尾开始删除最短匹配$substring子串 ${string%%substring} 从变量$string结尾开始删除最长匹配$substring子串索引及切片
${string:position} 在$string中,从$position个开始提取子串(从0开始计数) ${string:position:length} 在$string中,从位置$position之后开始提取长度为$length的子串变量内容替换
${parameter/pattern/string} 使用string代替第一个匹配的pattern ${parameter//pattern/string} 使用string代替所有的pattern ${parameter/#pattern/string} 从开头匹配string变量中的pattern, 用string替换匹配的pattern ${parameter/%pattern/string} 从结尾匹配string变量中的pattern, 用string替换匹配的pattern变量替代
${value:-word} 如果变量名存在且非null,则返回变量的值。否则,返回word字符串 用途:如果变量未定义,则返回备用的值 ${value:=word} 如果变量名存在且非null,则返回变量值。否则,设置这个变量值为word 并返回其值 用途:如果变量未定义,则设置变量为默认值,并返回默认值 ${value:?"not defined"} 如果变量名存在且非null,则返回变量的值。否则显示变量名:message, 并退出当前的命令或者脚本 用途:用于捕捉由于变量未定义而导致的错误,并退出程序 ${value:+word} 如果变量名存在且非null,则返回word。 否则返回null 用途:测试变量是否存在 变量作用域 环境变量使用 export 定义,在当前shell及其子shell中生效
本地变量仅在当前shell中生效
局部变量使用 local 定义 ,仅在函数中生效
表达式 运算符++ -- 自增 自减
! ~ 正号 负号 逻辑取反 按位取反
/ % 乘 除 取余