您的位置:首页 > 运维架构 > Shell

shell的简单编写及执行

2017-12-13 20:04 141 查看
sell脚本:

1.新建文件(扩展名.sh)
2.写代码
3.给权限,执行(x执行,绝对路径,相对路径<./test.sh /root/test.sh>)
vim a.sh
#!/bin/bash(解释器是谁)

例:
vim a.sh

#!/bin/bash(hello word)
echo "hello word"

chmod +x a.sh
bash a.sh
hello word

yum自动搭建的脚本:
#!/bin/bash(搭建yum仓库)

echo "正在配置yum源..."
rm -rf /etc/yum.repos.d/*
echo "[dvd]
name=dvd
enabled=1
gpgcheck=0
baseurl=http://172.25.4.254/rhel7" >/etc/yum.reopos.d/dvd.repo
yum clean all &> /dev/null
echo "yum源配置完成"
echo "yum源软件包数量:"
yum repolist | tail -1

装ftp
#!/bin/bash(安装vsftpd软件包)
yum -y install vsftpd
systemctl restart vsftpd
systemctl enable vsftpd

执行方式 ./1.sh /root/1.sh
脚本没有权限直接利用解释器 (ksh、sh)bash 1.sh 也是可以执行的 (以上执行的都是开启子进程的执行脚本)
脚本没有权限source 1.sh 也可以执行脚本(但是不开启子进程)<一般很少用特例如exit>

shell变量定义/赋值/查看:

自定义变量: 由数字、字母、符号组成不能以数字开头
a="值"
echo $变量
调用变量有时候存在歧义需要加{}
a=11
echo $aRMB (输出没有,没有该变量)
echo ${a}RMB
unset $a 撤销变量a(一般用不到)

系统定义变量
PASH,HOME,USER,UID,HOSTNAME
PS1一级提示符,PS2二级提示符

#!/bin/bash
echo $0输出脚本名称
echo $1在执行脚本输出后面的第一个参数
echo $2在执行脚本输出后面的第二个参数
echo $3在执行脚本输出后面的第三个参数
(..............)
echo $*输出所有的参数
echo $#输出所有的综合参数的个数
echo $$输出PID数值
echo $?查看上一命令执行成功没有输出为0执行成功其他数字都错
$! Chakanzuihou de yige jincheng de PID hao

例:(创建用户与设置密码)
#!/bin/bash
useradd $1
echo $2 | passwd --stdin $1

#!/bin/bash
read -p “请输入用户名:” name
stty -echo
read -p “请输入密码:” pass
stty echo
uaseradd $name
echo $pass | passwd --stdin $name

stty (-)echo 回显 (关闭)打开

在shell中三种引号对赋值的影响(双引号” ”、单引号’ ’、反撇号
`)<br/>   双引号   ”  ”  可以界定一个完整的字符串<br/>   echo  a       b<br/>   echo  “a     b”<br/>   单引号   ‘   ’  界定一个完整的字符串,屏蔽特殊符号即取消特殊符号的含义<br/>   echo  $a<br/>   echo  ‘$a’<br/>   反撇号
、  $( )     其中只可以放命令,提取的是命令的结果<br/>   每周五备份/var/log,使用tar ,备份到root<br/>   crontab  -e<br/>   03 03 * * 5  tar  -czf  /root/log
date +%F`.tar.gz /var/log
每周五三点三分
export 把变量发布为全局模式的变量
变量分为: 局部变量(自定义默认)
    全局变量(系统变量)
   a=11
   export a (a变量成为全局变量所有进程下都可以输出a的值)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell