主要定义,您的脚本是用什么语言写的
#!/usr/bin/python //定义这是一个python语言
#!/bin/bash //定义这是一个shell语言
echo @SHELL
我们执行的 linux 命令的时候,其实是使用 /bin/bash 这个二进制文件对 命令文件执行的。
执行脚本的时候,脚本中的路径会以用户当前位置开始计算
所以 推荐使用根路径 来对文件进行编辑
pwd
echo $(dirname $0) && echo "执行成功"
echo /root/k/king/a.sh
cat /root/k/king/a.sh # 执行成功
# 处理路径问题
echo $(dirname $0)/king/a.sh
cat /root/k/king/a.sh # 执行失败
$(dirname $0) == /root/k
/root/k/king/a.sh
/root/k/king/a.sh
自动备份和恢复,mysql
自动化管理
自动化信息采集监控,对 系统硬件 指标 采集回来。(主要用在监控层面)
自动化扩容
获取路径
假设一个文件
dirname /a/b/c.sh
basename c
# 父进程 调用子进程
# 如果要调用 子进程脚本
需要 使用
source
添加 trap : INT 之后则此进程不可以使用 ctrl + c 中断
trap : INT
for i in {1..100}
do
trap : INT
i=$[ $i +1 ]
echo "$i"
sleep 1
done
[[ ]] # 判断
(()) == [] # 判断
() == `` # 优先执行
[ "aslfjdl" =~ a.*e ];
${i} # 调用某个变量
$[ ] # 对括号里的 公式进行运算
1>
2>
&> #混合输出
1&>2 # 把正确输出修改为错误输出
2&>1 # 把错误输出修改 正确输出
>> # 追加
> # 覆盖
------------------------------------------------------------
#重定向输入
cat >> << EOF
内容1
内容1
EOF
env
-------------------------------------------------------------------
XDG_SESSION_ID=5
HOSTNAME=master1
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=10.12.155.180 53606 22
SSH_TTY=/dev/pts/0
USER=root
LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=zh_CN.UTF-8
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
SSH_CONNECTION=10.12.155.180 53606 10.12.155.146 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
XDG_RUNTIME_DIR=/run/user/0
_=/usr/bin/env
-------------------------------------------------------------------
echo $USER # 可以用来输出 环境变量
su - xiaoming
表示切换到用户xiaoming,并且同时切换到该用户的环境。这意味着系统会使用用户xiaoming的环境变量、工作目录,以及其他相关设置。这样可以模拟用户xiaoming登录系统后的环境。
su xiaoming
表示切换到用户xiaoming,但不会切换到该用户的环境,会保持当前环境。这样的切换可能会保留调用者的环境变量和工作目录。
常用于太长记不住的命令
alias asname = '{语句}'
# 前台放到后台
sleep 1000
ctrl + z
bg % {工作号}
bg % 1
# 放在后台执行
sleep 1000 &
# 可以退出信号
nohup sleep 1000 &
## 需要两个回车
ip a | grep inet | awk 'NR==3 {print $2}'| cut -d/ -f1
# cut -d/ -f1 /用来分割字符串的 -d 是指定分隔符 -f 是指定打印 第几列
ip a | grep inet | awk 'NR==3 {print $2}'| awk -F'/' '{print $1}'
# awk 默认以空格为分隔符
# awk -F 可以指定分隔符号
cat a.txt | xargs -i cp {} /{目录}
; # 多个简短的语句 一起执行
&& # 前边执行 成功才会执行后边
|| # 前边执行 不成功才会执行后边
{} # 集合{1..100},{a..z}
? # 匹配的时候 代表一个字符 只代表一个字符
* # 代表任意多个字符
[] # 只匹配中括号里边的一个字符 a[xyz]b 会匹配到 axb ayb azb
[!] # 只匹配中括号里边的一个字符 a[!xyz]b 会匹配到不是这些 axb ayb azb
[0-9] # 匹配到 0 到 9 一个数字
[0-9]+ # 匹配到 0 到 9 多个多个数字
history
# 在此文件中配置
vim /etc/profile
## 主要配置这个参数
HISTSIZE=1000
esc + . # 在命令含中执行
!$ # 可以用于脚本中
ctrl + a # 光标移动到 行首
ctrl + e # 光标移动到 行尾
1、shell 脚本结尾 要使用 .sh 进行结尾(内容会高亮 看见文件就知道这是一个sh脚本)
2、定义解释器 (#!/bin/bash)
autocmd BufNewFile *.sh exec ":call AddTitleForShell()"
function AddTitleForShell()
call append(0,"#!/bin/bash")
call append(1,"# *********************************************************#")
call append(2,"# #")
call append(3,"# * Author : 白嫖一茶 #")
call append(4,"# * QQ邮箱址 : [email protected] #")
call append(5,"# * Create time : ".strftime("%Y-%m-%d %H:%M:%S")." #")
call append(6,"# * Filename : ".expand("%:t")." #")
call append(7,"# * Description : This is Shell scripts #")
call append(8,"# #")
call append(9,"# #")
call append(10,"# *********************************************************#")
endfunction
5、执行脚本的方法
sh {脚本文件} # 不会影响当前父shell
bash {脚本文件} # 不会影响当前父shell
.{脚本文件} # 会影响当前父shell
source {脚本文件} # 会影响当前父shell
./{脚本文件}
可以使用vscode 安装 一下工具 方便编写脚本 以及测试
安装插件
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host {ip}
HostName {ip}
User {用户}
当a脚本要调用 b脚本的时候 需要
# 自定义变量
variate="这是一个变量" # 临时变量
export name=lisi # 环境变量
set variate="这是一个变量" # 取消一个变量
# 获取 用户变量
read
read -p "请输入名字:" name
read -t {10} ## 超时时间
read -s ## 不要回显
## 输入默认值
{leval:{默认值}}
# 预定义变量 系统帮我们定义好的
$? # 返回上一条 命令 执行结果
$$ # 当前进程PID
# 查看环境变量
env # 查看环境
set # 查看所有变量
unset {变量名} #删除变量 取消变量
export # 所有变量
/usr/local/mysql/:$PAHT # 把自己安装的服务加入环境变量
# 位置参数 传参(执行脚本之后 给脚本传递的参数)
$1 $2 # 执行的时候再代码后边添加一个参数// a.sh hello //echo "你输入的是: $1"
$0 # 表示 整行
$# # 位置参数的 总量
$@ # 统计位置参数的内容 ($1 获取位置变量 就是执行脚本呢 时 后边跟的参数) "$@" 还是一个一个来处理
$* # 统计位置参数的内容 () "$*" 会当成一个整体的字符串来处理
$! # 上一个后台进程 的PID
echo $0 # 返回脚本 路径文件
dirname $0 # 返回脚本命令
basename $0 # 返回脚本名字
# 脚本路径
curPath=$(cd `dirname $0`;pwd) #脚本路径做一个参数
#使用变量
echo ${variate} # {}花括号 防止中间有空格
echo "$variate" # 防止中间有空格
echo '$variate' # 把$ 当成字符串
执行
echo '\$variate' # 把$ 当成字符串执行 \$variate
echo "\$variate" # 转义
# 常用环境变量
USER
UID
HOME
HOSTNAME
PWD
PATH
父shell 定义一个变量 ,子shell 也会继承这个变量
每次执行脚本都会 启动一个子shell
# 获取 用户变量
read
read -p "请输入名字:" name
read -t ## 超时时间
read -s ## 不要回显
## 输入默认值
{leval:{-默认值}}
read -p "请输入名字:" name
{{变量}:{-默认值}} # 不会修改原有的值 此时变量还是空的
# 案例
{name :-刘德华} #
# 案例
{name :=刘德华} # 对 name 进行复制
echo ${name:?名字不能为空} # 如果name 是空 或者未设置
# 原有值不变,显示 word 内容
${变量:+word}
a="hello world"
echo ${a}
# 用来截取字符串 #* 再前边 开始截取
echo "${a#*l}"
# ##* 贪婪匹配 匹配到最后一个
echo "${a##*l}"
# 用来截取字符串 %{字符}* 从后边 开始截取
echo "${a%l*}"
# %%* 贪婪匹配 匹配到最后一个
echo "${a%%l*}"
# 替换输出
a=www.taobao.com
## 替换单个
echo ${a/taobao/baidu}
# 替换全部
echo ${a//a/w}
------------------------------------------------------------------------------
a=123456789
# 统计字符串的长度
echo ${#a}
# 从第二位之后开始截取
echo ${a:2}
# 从第二位之后开始截取 到第四位
echo ${a:2:4}
# 从第二位之后开始截取 到倒数第二位
echo ${a:2:-2}
# 从头开始截取 到倒数第二位
echo ${a:0:-2}
stty -echo # 输入的时候-不显示命令
`{命令}`
$({命令})
ip -f inet a show dev ens33
uptime | awk '{print $3,$4,$5}'
awk -F ',' #指定分割符号 这里指定的是 ,
awk '{print $NF}' # NF打印 总列数 总列书数嘛 最后一个也是总列数
cut -d- -f1 # 以- 为分隔符 第一列的值
# 可以使用 输入重定向
echo >> {文件名} <<EOF
{line 1}
{line 2}
{line 3}
EOF
# 运算符号
+
-
*
/
% # 取余
# 如果$1 位置为空 那么 将0 赋值给 $1
x=${1:-0}
x=${1:-0}
# 运算
x=2
y=9
echo $(($x+$y))
echo $[$x+$y]
# 优先运算
echo $(((3+5)/2))
# expr
expr 2 + 3
expr 2 \* 3
expr 2 "*" 3
expr 2 / 3
# 获得一个随机数字
$RANDOM
$(($RANDOM % 10)) # 取0-9
$(($RANDOM % 10 +1 )) # 取1-10
# 安装运算工具 bc
yum -y install bc1
# 使用方法
echo $((10/3)) | bc
# 高级数学库 (直接把公式 给他即可)
echo $((2+4)) | bc -l
# 计算圆周率
echo "scale=10000;4 * a(1)" | bc -l
# 判断真假 如果成立则返回 true 否则 返回 fless
tast 1 -gt 5
# 并且
-a
# 或者
-o
# 如果字符串是真的 则返回真
-n
# 如果字符串 是空的 则返回时真
-z
------------------------------------------------------------------------------
#判断数字
-eq # 等于
-ne # 不等于
-ge # 大于等于
-le # 小于等于
-gt # 大于
-lt # 小于
------------------------------------------------------------------------------
# 判断文件是否存在 并且是个块设备
-b {文件}
test -b /dev/sdc
# 文件存在 且时一个目录
-d {文件}
# 文件存在并且时一个普通文件
-f {文件}
# 文件存在且是一个链接文件
-h {文件}
# 只要有 就返回真
-e {文件}
# 双条件
if [-e /etc/passwd];then
echo "文件存在"
else
echo "文件不存在"
fi
------------------------------------------------------------------------------------
if [-e /etc/passwd];then
echo "{如果文件存在则执行这里的代码}"
else
[[-e /etc/passwd]] && echo "{如果文件存在则执行这里的代码}"
------------------------------------------------------------------------------------
# 多条件判断
read -t 5 -p"请输入您的年龄:" age
if [ $age -gt 70 ] && [ $age -le 150 ];then
echo "老年"
elif [ $age -gt 40 ] && [ $age -le 70 ];then
echo "中年"
elif [ $age -gt 18 ] && [ $age -le 40 ];then
echo "青年"
elif [ $age -ge 0] && [ $age -le 18 ];then # 大于等于
echo "小屁孩"
else
echo "噶了"
fi
-----------------------------------------------------------------------------------
#
read -t 5 -p"请输入您的年龄:" score
case $score in
90)
echo "清华"
;;
60)
echo "家里"
;;
*)
echo "不及格"
esac
for i in {1..100}
do
echo "$i"
done
# 范围支持
## 空格 1 2 3 4
## 逗号 {1,2,3,4}
## tab 1 2 3
## for i in (cat file.txt)
## for i in seq 100 # 1到一百
## for i in seq 2 100 # 2到一百
## for i in $(seq -w 2 100) # 0 填充
-------------------------------------------------------------------------------
for i in {a..z}
do
echo "$i"
done
-------------------------------------------------------------------------------
# 两个集合破解
for i in {a..z}{1..10}
do
echo "$i"
done
-------------------------------------------------------------------------------
# 上上边的区别在于 这个次数是一个变量
i={次数}
for ((j=0; j<i; j++)); do
执行多少次
done
for i in {1..100}
do
# clear
line="<---------------------------------------------------------------------------------------------------->"
for ((j=0; j<i; j++)); do
line=$(echo "$line" | sed 's/-/=/')
done
echo "$line $i %"
sleep 0.1
# echo "$i"
# echo "Hello, World!"
done
i=0
while [$i -lt 100]
do
a=$[$a+1]
echo "$a"
done
---------------------------------------------------------------------------------------
# 循环打印某个文件 每一行 可以把数据放入某个文件中 进行批量处理
while read line
do
echo $line
done </etc/passwd
-----------------------------------------------------------------------------------------------
# 这是一个死循环 : 这里直接跳过
while :
do
echo ""
done
i=0
while [$i -lt 100]
do
let a++
echo "$a"
done
a=$[$a+1] == let a++
sh a.sh 1 2
echo $1
shift
echo $2
会输出两个1
for i in {1..10}
do
if [ $i eq 5 ];then
continue
fi
echo "$i"
done
# shift
# continue 跳过本次循环 进行下次循环
# break 结束整个循环 继续下一个程序
# exit 结束程序
一次做好,多次使用。避免重复造轮子
# function 声明函数
# check 是函数的名字
# () 没有实际意义
# {} 函数体
function check(){
echo 111
}
----------------------------------------------------------------
# 直接写
check(){
echo 111
}
----------------------------------------------------------------
# 本地调用
function check(){
echo $1
}
check 111
----------------------------------------------------------------
# 远程调用(调用别的sh 文件的函数)
比如我要调用 上边文件的内容
source {函数文件路径}
check 222
ip_list="www.baidu.com www.taobao123.com 10.12.155.149"
func(){
for i in $ip_list
do
ping -W1 -c1 $i &>/dev/null
if [ $? -eq 0 ]; then
echo $i
fi
done
}
a=10
func(){
local # 使用loacl 之后 变量在函数中的值 不会影响函数外边
a=20
echo $a
}
func
func(){
ping -W1 -c1 www.baidu.com &>/dev/null
if[ $? -eq 0 ];then
echo "网络通常"
return
else
ping -W1 -c1 8.8.8.8 &>/dev/null
if [ $? -eq 0 ];then
echo "dns 配置错误"
return 10
else
ping -W1 -c1 192.168.100.2&>/dev/null
if [ $? -eq 0 ];then
echo "本地网络环境异常,请检查"
return 20
else
echo "请检查 网关"
return 30
fi
fi
fi
}
func
result=$? # func 返回结果赋值给 result
if [ $result -eq 0 ];then
echo "网络通畅"
elif [ $result -eq 10 ];then
echo "DNS配置错误"
elif [ $result -eq 20 ];then
echo "DNS配置错误"
elif [ $result -eq 30 ];then
echo "DNS配置错误"
sh -n {脚本文件} # 判断语法上的错误
sh -x {脚本文件} # 不执行脚本 只是检查语法模式,将返回所有错误语法
sh -v {脚本文件} #打印执行的过程
env | grep SSH
systemctl status firewalld | grep Active | awk -F {print $2}
yum
mkpasswd
-l 10 #
-c 5 #
#!/bin/bash
# 先定义一些颜色:
echo -e "\e[1;31m LoveLo LoveLo \e[0m"
red='\e[0;41m' # 红色
RED='\e[1;31m'
green='\e[0;32m' # 绿色
GREEN='\e[1;32m'
yellow='\e[5;43m' # 黄色
YELLOW='\e[1;33m'
blue='\e[0;34m' # 蓝色
BLUE='\e[1;34m'
purple='\e[0;35m' # 紫色
PURPLE='\e[1;35m'
cyan='\e[4;36m' # 蓝绿色
CYAN='\e[1;36m'
WHITE='\e[1;37m' # 白色
NC='\e[0m' # 没有颜色
echo -e "${red}显示红色0 ${NC}"
echo -e "${RED}显示红色1 ${NC}"
echo -e "${green}显示绿色0 ${NC}"
echo -e "${GREEN}显示绿色1 ${NC}"
echo -e "${yellow}显示黄色0 ${NC}"
echo -e "${YELLOW}显示黄色1 ${NC}"
echo -e "${cyan}显示蓝绿色0 ${NC}"
echo -e "${CYAN}显示蓝绿色1 ${NC}"
----------------------------------------------------------------
tput
# 语法
## 更换 背景颜色
tput setab 2
## 更换 字体颜色
tput setab 2
0 黑色
1 红
2 绿
5 是粉色 {杨红}
7 白色
闪烁
tput setab 颜色代码 //背景色
tput setaf 颜色代码 //字体颜色
tput sgr0 //颜色重置
==================================
数值 0 1 2 3 4 5 6 7
颜色 黑 红 绿 黄 蓝 洋红 黄 白
=====================================================================================================
echo -e "\033[字背景颜色;文字颜色m字符串\033[0m" //设置文本颜色
echo -e "\033[0;32m字符串\033[0m" //设置文本为绿色,背景没有颜色
echo -e "\033[0;$(($RANDOM%7+30))m字符串\033[0m" //随机生成一个颜色
其中“F“为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47
F B
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色
'\E[33;5m 文本 \E[0m' //33黄色,黄色闪烁
tput setab 颜色代码 //背景色
tput setaf 颜色代码 //字体颜色
tput sgr0 //颜色重置
==================================
数值 0 1 2 3 4 5 6 7
颜色 黑 红 绿 黄 蓝 洋红 黄 白
path=$(cd $(dirname $0) ;pwd)
[[ $path ="/opt/scripts" ]] && echo "执行成功" || echo "不在路径"
#!/bin/bash
# *********************************************************#
# #
# * Author : 白嫖一茶 #
# * QQ邮箱址 : [email protected] #
# * Create time : 2023-12-28 17:22:18 #
# * Filename : jiegeTools.sh #
# * Description : This is Shell scripts #
# #
# #
# *********************************************************#
while :
do
cat <<EOF
@===========================================================@
@ @
@ Welcome use system tools @
@ 1.Config aliyun_yum @
@ 2.System init @
@ 3.source install mysql @
@ 4.source install PHP @
@ 6.source install nginx @
@ 0.退出 @
@ @
@===========================================================@
EOF
read -p "请输入" num
case $num in
0)
exit 0
;;
1)
source ./system-libs/config_aliyun.sh
if [ $aliyun_yum_code -eq 0 ]; then
fi
echo "开始执行 条件一"
;;
2)
echo "开始执行 条件二"
;;
3)
: # 这里是一个占位符,表示你不用管我
;;
4)
echo "未开发"
exit 1 # 控制返回
;;
5)
echo "未开发"
exit 1 # 控制返回
;;
6)
echo "未开发"
exit 1 # 控制返回
;;
*)
esac
done
#! /bin/bash
cat <<EOF
==========================================================
1 条件 1
1 条件 2
1 条件 3
==========================================================
EOF
read -p "请输入" num
case $num in
1)
echo "开始执行 条件一"
;;
2)
echo "开始执行 条件二"
;;
2)
: # 这里是一个占位符,表示你不用管我
;;
4)
echo "未开发"
exit 1 # 控制返回
*)
esac
name=kobe
kobe=24
eval echo "$""$name"
# 先获取 name 的值,再进行构造, 从而获取到的值
#! bin/bash
# 1、编写规范、注意缩进、解释器
# 2、收集信息、内存、磁盘、用户、时间、IP
# 获取内存
echo -e "剩余内存:`free -m | awk '/^Mem/{print $4}'`MB"
## 修改颜色
echo -e "\033[31m文本\033[0m"
## 多种颜色 获取一个随机数
echo $[$RANDOM % 7 + 31]
# 根分区百分比
df -hT | awk '/\/$/{print $6}'
# 用户
w -h
w -h | awk '{print $1}'|sort |uniq -c | awk '{print $2}'
# 客户端IP
echo $SSH_CLIENT | awk 'print $1'
curl http://httpbin.org/ip
# 3、输出信息
-------------------------------------------------------------------------
# 编写一个shell脚本,用于搜集其执行主机的信息,打印结果如下:
# [root@tiger tmp]# ./test.sh
# 2012年 05月 24日 星期四 17:07:45 CST
# 当前的用户为 root
# 当前用户的宿主目录为 /root 用户的标识为 0
# 主机名称为 newrain
# 网卡的IP地址为 192.168.1.106
#!/bin/bash
wangduan='10.12.155'
for i in {1..254}
do
ping -W -c1 $wangduan$1 > /dev/null
if [$? -eq 0];then
echo "$wangduan$1" >> ok.txt
else
echo "$wangduan$1" >> no.txt
fi
done
$? 返回的是 0 则代表上一条命令
# 创建十个用户 截取uuid 第一段为 密码 把密码保存到一个文件中
# user_01 -- user_10
uname=user_
isPasswd="密码是"
for i in $(seq -w 10)
do
echo $uname$i
useradd $uname$i
myPasswd=$(echo `uuidgen` | awk -F "-" '{print $1}')
echo $myPasswd | passwd --stdin $uname$i
echo $uname$i$isPasswd$myPasswd >> ./myP.txt
# userdel -r $uname$i # 删除用户
done
for i in $(seq 9)
do
for j in $(seq 9)
do
echo -ne "$i * $j = $(($i * $j))\t"
done
echo ''
done
echo -----------------------------------------------------------------------
# 三角
for i in $(seq 9)
do
for j in $(seq $i)
do
echo -ne "$i * $j = $(($i * $j))\t"
done
echo ''
done
cat > /root/.vimrc << EOF
set ignorecase
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#")
call setline(3,"#**************************************")
call setline(4,"#Author: liujie")
call setline(5,"#QQ: 945225432")
call setline(6,"#Date: ".strftime("%Y-%m-%d"))
call setline(7,"#FileName ".expand("%"))
call setline(8,"#**************************************")
call setline(9,"")
endif
endfunc
autocmd BufNewFile * normal G
EOF
回的是 0 则代表上一条命令
# 创建十个用户 截取uuid 第一段为 密码 把密码保存到一个文件中
# user_01 -- user_10
uname=user_
isPasswd="密码是"
for i in $(seq -w 10)
do
echo $uname$i
useradd $uname$i
myPasswd=$(echo `uuidgen` | awk -F "-" '{print $1}')
echo $myPasswd | passwd --stdin $uname$i
echo $uname$i$isPasswd$myPasswd >> ./myP.txt
# userdel -r $uname$i # 删除用户
done
for i in $(seq 9)
do
for j in $(seq 9)
do
echo -ne "$i * $j = $(($i * $j))\t"
done
echo ''
done
echo -----------------------------------------------------------------------
# 三角
for i in $(seq 9)
do
for j in $(seq $i)
do
echo -ne "$i * $j = $(($i * $j))\t"
done
echo ''
done
cat > /root/.vimrc << EOF
set ignorecase
set cursorline
set autoindent
autocmd BufNewFile *.sh exec ":call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#")
call setline(3,"#**************************************")
call setline(4,"#Author: liujie")
call setline(5,"#QQ: 945225432")
call setline(6,"#Date: ".strftime("%Y-%m-%d"))
call setline(7,"#FileName ".expand("%"))
call setline(8,"#**************************************")
call setline(9,"")
endif
endfunc
autocmd BufNewFile * normal G
EOF
未完结