系统相关
首页 > 系统相关> > shell脚本

shell脚本

作者:互联网

[root@centos7.7 tmp]# cd /data/
[root@centos7.7 data]# ls
[root@centos7.7 data]# mkdir newsh
[root@centos7.7 data]# cd newsh/.
[root@centos7.7 newsh]# ls
[root@centos7.7 newsh]# ll
总用量 0

#1 编写脚本文件 vi Jackie_shell.sh
[root@centos7.7 newsh]# vim jackie_shell.sh
#!/bin/bash
#auto mkdir
#by author jackie.net
mkdir -p /tmp/20161028 #在tmp下新建目录
echo -e “\033[35m Helld,world.\033[0m”
~
执行这个脚本文件
[root@centos7.7 newsh]# /bin/bash jackie_shell.sh
Hello,world.
<1>查看脚本执行权限
[root@centos7.7 newsh]# ll jackie_shell.sh
-rw-r–r--. 1 root root 55 10月 31 19:10 jackie_shell.sh
给脚本文件赋权
[root@centos7.7 newsh]# chmod o+x jackie_shell.sh
[root@centos7.7 newsh]# ll jackie_shell.sh
-rw-r–r-x. 1 root root 55 10月 31 19:10 jackie_shell.sh
<2> 执行这个执行脚本
[root@centos7.7 newsh]# ./jackie_shell.sh
Hello,world.
调试脚本报错 # -x
[root@centos7.7 newsh]# /bin/bash -x jackie_shell.sh

#2 编写脚本文件 vi jackie_lamp.sh
#!/bin/bash
#auto make install LAMP
#by author jackie.txt 2016
echo “----------------”
yum install httpd httpd-devel php php-devel -y
echo “The LAMP env install success”
[root@centos7.7 newsh]# sh jackie_lamp.sh

#优化字符输出
#-e 扩展参数
#\n 换行
echo -e “\033[32m Start scripts—\n----------------\033[0m”
echo -e “\033[35m Hello,world.\033[0m”
~

<2>输出增改脚本文件 vi jackie_lamp.sh
#LAMP 变量
vim jackie_lamp.sh
#!/bin/bash
#auto make install LAMP
#by author jackie.txt 2016
echo -e “\034[35m Start scripts—\n----------------\033[0m”
LAMP=“vim tree httpd”
#######
yum install $LAMP
yum install $LAMP

shell 常见的系统变量解析
$0 当前脚本的名称
$n 当前脚本的第n个参数n=1,2,9
$* 当前脚本的所有参数(不包括程序本身)
$# 当前脚本的参数个数(不包括程序本身)
$? 命令或执行完后的状态,一般返回0表示执行成功
$$ 脚本的PID
$UID 当前用ID
$PWD 当前所在目录
#1 $?
[root@centos7.7 ~]# pwd
/root
[root@centos7.7 ~]# echo $?
0
[root@centos7.7 ~]# pwdabc
bash: pwdabc: 未找到命令…
[root@centos7.7 ~]# echo $?
127
[root@centos7.7 ~]#

#\ 转意符号
#3 编写脚本变量 vim var.sh
#!/bin/bash
#auto print variables
#by wugk 2020-10-31
echo -e ‘\033[35m--------------\033[0m’
echo “This $0 is $0 param !”
echo “This $1 is $1 param !”
echo “This $2 is $2 param !”
echo -e ‘\033[35m--------------\033[0m’
echo
echo “This $* is $* param !”
echo “This $# is $# param !”
echo “This $? is $? param !”
echo “This $$ is $$ param !”

$0 当前脚本的名称
$n 当前脚本的第n个参数n=1,2,9
$* 当前脚本的所有参数(不包括程序本身)
$# 当前脚本的参数个数(不包括程序本身)
$? 命令或执行完后的状态,一般返回0表示执行成功 *上条命令是否成功
$$ 脚本的PID
[root@centos7.7 newsh]# vim var.sh


This $0 is var.sh param !
This $1 is a param !This


This $* is a b c param !
This $# is 3 param !
This $? is 0 param !
This $$ is 122795 param !

#4 编写变量脚本 vim jackie_install_software
#!/bin/bash
#jackie install software
#by author jackie.net
#define Path variables
soft_ware1="$1"
soft_ware2="$2"
yum install $soft_ware $soft_ware2 -y
~
[root@centos7.7 newsh]# sh jackie_install_software.sh vim mysql
[root@centos7.7 newsh]# /bin/bash jackie_install_software.sh vim mysql

<1>增改的脚本文件vim jackie_install_sofeware
soft_ware="$*" #表示所有参数都会装上
[root@centos7.7 newsh]# sh jackie_install_software.sh vim mysql centos tomcat

#5 编写脚本文件 vi jackie_apache_menu.sh
#!/bin/bash
#auto install httpd
#by jackie 2020-11-1
#====================
echo -e ‘\033[35m--------------\033[0m’

files=httpd-2.2.31.tar.bz2
url=http://mirrors.cnnic.cn/apache/httpd/
prefix=/usr/local/apache2

echo -e ‘\033[35mPlease Select Install Menu:\033[0m’
echo
echo “1)官方下载Httpd文件包.”
echo “2)解压Httpd源码包.”
echo “3)编译安装Httpd服务器.”
echo “4)启动Httpd服务器.”
echo -e ‘\033[35m--------------\033[0m’
sleep 20 #等待20秒在运行下面指令
echo Done

<1>增改的脚本文件 vi Jackie_apache_menu.sh
echo “1)官方下载 f i l e s . " e c h o " 2 ) 解 压 files." echo "2)解压 files."echo"2)解压files源码包.”
echo “3)编译安装httpd.”
echo “4)启动HTTPD服务器.”
#启动脚本文件


Please Select Install Menu:

1)官方下载httpd-2.2.31.tar.bz2.
2)解压httpd-2.2.31.tar.bz2源码包.
3)编译安装httpd.


Done.

<2>增改的脚本文件 vi Jackie_apache_menu.sh
echo -e “\033[31mUsage: { /bin/sh $0 1|2|3|4|help}\033[0m”
#启动脚本文件
[root@centos7.7 newsh]# /bin/bash jackie_apache.menu.sh
Usage: { /bin/sh jackie_apache.menu.sh 1|2|3|4|help}

if条件语句学习
if条件 if for while case
#(()) 代表运算
#[] if运行区间代表运算
#;then 固定格式
#if 以fi结尾
#-d 判断目录
#-f 判断文件
#!-d 如果目录不存在
#%s/dir/files/g 替换命令 files替换dir
#-eq 等价符号 相当于等于
#configure --pref x= #定义安装的路径
#-z 为空
#wget -c 断点续传命令
#-lt 小于0
if
语句1
else
语句2

#1 编写脚本文件
[root@centos7.7 newsh]# vim number.sh
#!/bin/bash
NUM=100

if (($NUM > 4));then
echo “The NUM is $NUM greater 4.”
else
echo “The NUM is $NUM little 4.”
fi #以fi结尾
[root@centos7.7 newsh]# /bin/bash number.sh
The NUM is 100 greater 4.

<1>增改的脚本文件 vim number.sh
NUM=$1 #$1脚本的第一个参数
[root@centos7.7 newsh]# /bin/bash number.sh 10
The NUM is 10 greater 4.
[root@centos7.7 newsh]# /bin/bash number.sh 2
The NUM is 2 little 4.

#2 编写脚本文件 测试是否存在,不存在则新建
[root@centos7.7 newsh]# vim if_dir.sh
#!/bin/bash

DIR=/data/2020/11/1
if [ ! -d $DIR ];then
mkdir -p $DIR
echo " The $DIR create success."
else
echo “The $DIR is exist.”
exit
fi
输出脚本文件
[root@centos7.7 newsh]# /bin/bash if_dir.sh
The /data/2020/11/1 create success.

#3 编写脚本文件 vim if_files.sh
#!/bin/bash

files=$1
if [ ! -f $files ];then
touch $files
echo " The $files create success."
else
echo “The $files is exist.”
exit
fi
[root@centos7.7 newsh]# /bin/bash if_files.sh /etc/hosts
The /etc/hosts is exist.
[root@centos7.7 newsh]# /bin/bash if_files.sh /data/test.txt
The /data/test.txt create success.

<1>增改的脚本文件 vim if_files.sh
#!/bin/bash

INPUT=$1
##########
if [ $INPUT == “Yes” ];then
echo “Please install LAMP.”
else
echo “Please exit.”
fi
[root@centos7.7 newsh]# /bin/bash if_files.sh 2
Please exit.
[root@centos7.7 newsh]# /bin/bash if_files.sh Yes
Please install LAMP.

脚本格式
H_FILES=httpd-2.2.27.tar.bz2 # 依赖文件
H_FILES_DIR=httpd-2.2.27 # 进入目录
H_URL=https://mirrors.cnnic.cn/apache/httpd/httpd-2.2.27.tar.bz2 #下载镜像
H_PREFIX=/usr/local/apache2/ #定义安装的路径

<2>增改脚本文件 vi jackie_apache.menu.sh
if [ 1 − e q 1 ] ; t h e n w e g e t − c 1 -eq 1 ];then weget -c 1−eq1];thenweget−ch_url/$h_files
tar -jxf $h_files ;cd h f i l e s d i r ; c o n f i g u r e − − p r e f i x = h_files_dir;configure --prefix= hf​ilesd​ir;configure−−prefix=h_prefix
make && make install

shell 脚本编写思路

标签:脚本,shell,jackie,echo,sh,newsh,root,centos7.7
来源: https://blog.csdn.net/weixin_50504879/article/details/110094787