`

shell编程

 
阅读更多

 

if条件判断

逻辑运算符:或

score=$1
if [ $score = 5 ]||[ $score = 3 ];then
    echo right
else
    echo wrong
fi

 

score=$1
if [ $score -gt 5 ]||[ $score -lt 3 ];then
    echo right
else
    echo wrong
fi

 

score=$1
if [ $score -gt 15 ]||([ $score -lt 8 ]&&[ $score -ne 5 ]);then
    echo right
else
    echo wrong
fi

逻辑运算符的另一种写法:

-a 逻辑与
-o 逻辑或
! 逻辑否
count="$1"

if [ $count -gt 15 -o $count -lt 5 ];then

   echo right

fi
 
count="$1"

if [ $count -gt 5 -a $count -lt 15 ];then

   echo right

fi

 

score=$1
if [[ $score -gt 15 || $score -lt 8 && $score -ne 5 ]];then
    echo right
else
    echo wrong
fi

 

判断脚本变量是否为空

 

P=$1
if [ ! -n $P ]; then
    echo "is null"
else 
    echo "is not null"
fi

 

P=$1
if [ ! $P ]; then
    echo "is null"
else 
    echo "is not null"
fi
P=$1
if test -z $P; then
    echo "is null"
else 
    echo "is not null"
fi

 

 

 

 

shell中map的使用和遍历
declare -A map=()  

 

declare -A map=(["100"]="1" ["200"]="2")  

 

echo ${!map[@]}  

 

echo ${map[@]}  

  

map["300"]="3"  

 

echo ${map["100"]}  

 

for key in ${!map[@]}  
do  
    echo ${map[$key]}  
done 

 

 

shell提取文件后缀名,并判断其是否为特定字符串

 

如果文件是 .css文件 或 .js文件,则进行处理。

file=$1

if [ "${file##*.}"x = "css"x ]||[ "${file##*.}"x = "js"x ];then

    do something

fi

 注意:

1、 提取文件后缀名: ${file##*.} 

    ##是贪婪操作符,从左至右匹配,匹配到最右边的.号,移除包含.号的左边内容。

2、 是=,而且其两边有空格,如果没有空格,会报错

3、 多加了x,是为了防止字符串为空时报错。

 

 

重定向标准输出和标准错误输出 写道
for i in `cat /etc/hosts | grep -vE $HOSTNAME | grep datacube | awk '{print $2}'`;
do
     echo "$1 machine $i"
     /usr/bin/ssh $i "/sbin/$COMMOND" 2>>"$LOG_FILE" 1>&2
done

 注:将标准错误输出到$LOG_FILE中,并且将标准输出重定向到标准错误输出。

 

 

#! /bin/sh

# get directory currenctly
DIR_NOW=$(cd $(dirname $0); pwd)
echo "DIR_NOW=$DIR_NOW"

# get up one directory according to current directory 
DIR_UP=$(dirname $(cd $(dirname $0); pwd))
echo "DIR_UP=$DIR_UP"

 

 

测试语句

格式一 test

格式二 [ <测试表达式> ]

格式三   [[ <测试表达式> ]]

字符串测试比较

注意事项:

1 字符串或字符串变量比较都要加双引号再比较;

2 字符串或字符串变量比较,比较符号两端都最好都有空格;

整数二元比较操作符

 

逻辑操作符

在[ ]中是使用的逻辑操作符 在[[  ]]中使用的逻辑操作符 说明
-a &&  
-o ||  
! !  

 

 

 

监控MySQL是否异常,如果异常则启动.

 

Web服务监控手段.

 

 

Shell变量输入

read -t 5 -p "pls input:" a

 

#!/bin/sh
read -p "pls input two num:" a b
[ -z "$a" ] || [ -z "$b" ] && {

  echo "pls input two num again"
  exit 1
}

expr $a + 0 &> /dev/null
RETVAL1=$?
expr $b + 0 &> /dev/null
RETVAL2=$?
#[ $RETVAL1 -ne 0 -o $RETVAL2 -ne 0 ] && {
#  echo "pls input two num again"
#  exit 2
#}
test $RETVAL1 -ne 0 -o $RETVAL2 -ne 0 && {
  echo "pls input two num again"
  exit 2
} 

[ $a -lt $b ] && {
  echo "$a < $b" 
  exit 0
} 

[ $a -eq $b ] && {
  echo "$a == $b"
  exit 0
} 

[ $a -gt $b ] && {
  echo "$a > $b"
  exit 0
}

 

 

变量的数值计算

expr

bc 是unix下的计算器,支持小数运算和整数运算

 

变量替换避免误操作

运算符号 替换
${value:-word} 如果变量名存在且非null,则返回变量的值。否则,返回word字符串。
用途:如果变量未定义,则返回默认值。
范例:${value:-word},如果value未定义,则表达式的值为word。
${value:=word} 如果变量名存在且非null,则返回变量的值。否则,设置这个变量值为word,并返回其值。
用途:如果变量未定义,则设置变量为默认值,并返回默认值。
范例:${value:=word},如果value未定义,则设置value值为word,返回表达式的值也为word。
${value:?"not defined"} 如果变量名存在且非null,则返回变量的值,否则显示变量名message,
并且退出当前的命令或者脚本。
用途:用于捕捉由于变量未定义而导致的错误,并退出程序。
范例:${value:?"not defined"}如果value未定义,则显示-bash:value: not defined 并退出。
${value:+word} 如果变量名存在且非null,则返回word。否则返回null。
用途:测试变量是否存在。
范例:${value:+word}如果value已经定义,返回word(也就是真)。

 

Shell特殊变量

1、位置变量

$0  获取当前执行的shell脚本的文件名

$n  获取当前执行的shell脚本的第n个参数值,n=1..9,当n=0时表示脚本的文件名,如果n大于9,需要用大括号括起来${10}

$#  获取当前执行的shell脚本后面接的参数总的个数

$*   所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

$*与$@的区别?

dirname  $0

basename  $0

 

2、进程状态变量

$?  获取执行上一个指令的返回值(0为成功,非零为失败)

$$  获取当前shell脚本的进程号(PID)

$!   获取上一个指令的PID

$_  在此之前执行命令的最后一个参数

参考linux下set和eval的使用小案例精彩解答

 

Shell函数

#!/bin/sh

if [ $# -ne 1 ]
then 
    echo "Usage:$0 {url}."
    exit 1
fi

function Check_Url(){
    curl -o /dev/null -s -w "%{http_code}" $1 && return 0 || return 1
}

Check_Url $1

 

脚本启动Mysql单实例和多实例

把脚本放到/etc/init.d,实现/etc/init.d/mysql01  start 启动,并且通过chkconfig对其进行开机启动和管理.

怎么把自己写的脚本添加到服务里面,即可以使用service命令来调用?

 

#!/bin/sh
# chkconfig:  2345  20  60
# description: start or stop mysqld service 
 
让echo输出显示不同的颜色
echo要变换颜色的时候,要使用参数-e
格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"
例如: 
echo -e "\033[41;36m something here \033[0m"

其中41的位置代表底色, 36的位置是代表字的颜色

打印水果菜单并接受用户选择并输出对应颜色
#!/bin/sh
RED_COLOR="\033[31m"
GREEN_COLOR="\033[32m"
YELLOW_COLOR="\033[33m"
COLOR_END="\033[0m"

menu (){
cat <<END
    ===============
    1.apple
    2.banana
    3.pear
    ===============
END
}

while true 
do
menu
read -p "choose one number:" num
clear
case $num in
    1)
        echo -e "$RED_COLOR apple $COLOR_END"
        ;;
    2)
        echo -e "$YELLOW_COLOR banana $COLOR_END"
        ;;
    3)
        echo -e "$GREEN_COLOR pear $COLOR_END"
        ;;
    4)
        exit 0
        ;;
    *)
        echo "Usage: choose {1|2|3|4}"
        ;;
esac
done
 注意:
cat <<END
    ===============
    1.apple
    2.banana
    3.pear
    ===============
END
# cat <<END 需要顶格写,否则会出现问题
#!/bin/sh
RED_COLOR="\033[31m"
GREEN_COLOR="\033[32m"
YELLOW_COLOR="\033[33m"
COLOR_END="\033[0m"

menu (){
    echo 
    echo "=================="
    echo -e "1.\tapple"
    echo -e "2.\tbanana"
    echo -e "3.\tpear"
    echo -e "4.\texit"
    echo "=================="

}

while true 
do
menu
read -p "choose one number:" num
clear
case $num in
    1)
        echo -e "$RED_COLOR apple $COLOR_END"
        ;;
    2)
        echo -e "$YELLOW_COLOR banana $COLOR_END"
        ;;
    3)
        echo -e "$GREEN_COLOR pear $COLOR_END"
        ;;
    4)
        exit 0
        ;;
    *)
        echo "Usage: choose {1|2|3|4}"
        ;;
esac
done
 

 

 

 

分享到:
评论

相关推荐

    shell编程入门经典--LINUX与UNIX Shell编程指南 (中文pdf版)

    《LINUX与UNIX Shell编程指南》是一本专为初学者设计的shell编程教程,它深入浅出地介绍了在Linux和UNIX系统中如何使用Shell进行高效自动化任务处理。Shell编程是Linux和UNIX系统中的核心技术,它允许用户通过命令行...

    Windows Shell 编程.pdf

    在使用windows shell扩张编程工具的过程中深切体会到windows shell技术资料的重要性,为此,根据Dino Esposito的《Visual C++ Windows Shell Programming》为蓝本,编译形成以下文字,为希望使用windows shell编程的...

    shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程.rar

    Shell编程是Linux/Unix操作系统中的一种重要工具,它允许用户通过命令行与系统进行交互,执行各种任务。本文将深入探讨Shell编程的基础知识,包括基本语法、常用的内置命令、条件语句、循环结构以及函数的使用,旨在...

    Linux与UNIX Shell编程指南.pdf

    "Linux与UNIX Shell编程指南" Linux与UNIX Shell编程指南是计算机科学领域中一本经典的指南手册,旨在帮助读者快速掌握Linux与UNIX操作系统下的shell编程技术。下面是从该书中生成的相关知识点: 1. Shell概述 ...

    LinuxShell编程基础教程.pdf

    Linux Shell 编程基础教程 本资源为 Linux Shell 编程基础教程,涵盖了 Linux Shell 编程的基础知识,包括语法基本介绍、变量、环境变量、Shell 命令和流程控制等。 一、语法基本介绍 在 Linux Shell 编程中,...

    Shell编程中文手册.pdf

    Shell 编程中文手册 本手册涵盖了 Shell 编程的基础知识,包括 Shell 概述、Shell 解析器、Shell 脚本入门、Shell 中的变量等。 Shell 概述 Shell 是一种命令行接口,允许用户与操作系统进行交互。学习 Shell ...

    Windows Shell 编程指南与实例

    Shell编程则允许开发者通过编写脚本或程序来自动化常见的系统任务,提高工作效率。 一、Windows Shell基础 Windows Shell编程的基础在于了解批处理(Batch)脚本和Windows Script Host (WSH)。批处理脚本是包含一...

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    本书通过各种实用的系统管理小技巧和趣味脚本代码,详尽地介绍了shell编程各个不同的方面。学完本书后,你将成为一名shell编程高手。 内容简介 本书共分五部分 ,详细介绍了SHELL编程技巧,各种UNIX命令及语法,还...

    shell编程从入门到精通

    Shell编程是Linux和Unix系统中不可或缺的一部分,它是一种命令行解释器,同时也是脚本编程语言。通过Shell,用户可以高效地与操作系统交互,自动化日常任务,实现系统管理、数据处理和网络控制等功能。本教程“Shell...

    shell编程--用户信息管理(模拟).doc

    "shell编程--用户信息管理(模拟)" 本课设计的主要目的是让学生掌握 Linux 操作系统中 shell 脚本编程技术的各种知识点,包括变量定义、变量使用、循环控制结构、条件选择结构、用户交互、文件读写、文本内容分析...

    Shell编程高级进阶系列视频.zip

    13Linux下Shell编程之While case演练 14Linux下Shell编程之While case演练 15Shell编程之函数及脚本案例讲解 16Shell编程之函数及脚本案例讲解 17Linux下Shell编程FIND、SED命令实战 18Linux下Shell编程FIND、SED...

    shell编程用户信息管理(模拟)课程设计说明书

    Shell 编程用户信息管理(模拟)课程设计说明书 该课程设计旨在掌握 Linux 操作系统中 shell 脚本编程技术的变量定义、变量使用、循环控制结构、条件选择结构、用户交互、文件读写、文本内容分析以及 Linux 重要...

    Shell 编程.pdf

    为什么要进行shell编程 在Linux 系统中,虽然有各种各样的图形化接口工具,但是shell仍然是一个非常灵活的工 具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使 大量的任务自动化,...

    实战LINUX_SHELL编程与服务器管理.pdf

    Linux Shell编程与服务器管理是系统管理员和网络管理员必须掌握的高级技能之一。Shell作为操作系统的一个重要组件,是用户与系统核心之间的接口,几乎所有管理者在日常工作中都会频繁地与Shell打交道。Shell具有解释...

    UNIX命令及SHELL编程

    这是一套完整的Unix培训教材,包括Unix常用命令及SHELL编程基础与高级技巧,PDF格式,共30个文件。另有2个Word文档。包内文件清单如下: 01_Shell-文件安全与权限.PDF 02_Shell-使用find和xargs.PDF 03_Shell-...

    shell编程题目练习

    shell编程题目练习,练习基本的shell编程,学习脚本语言,提高效率

    绝版经典《Linux与UNIX Shell编程指南》中文文字PDF版

    《Linux与UNIX Shell编程指南》是一本深受欢迎的IT技术书籍,主要涵盖了Linux和UNIX操作系统中的Shell编程技术。这本书在IT领域中具有很高的价值,尤其是对于那些致力于提升系统管理技能和自动化任务处理能力的读者...

    Shell编程入门基础必备视频教程.zip

    1Linux下Shell编程入门及变量讲解.mp4 2Linux下Shell编程入门及变量讲解.mp4 3Shell编程企业实战菜单系列.mp4 4Shell编程企业实战菜单系列.mp4 5Linux下LAMP实战及脚本编程思路讲解.mp4 6Linux下LAMP实战及脚本编程...

    Linux零基础学习笔记 Shell编程-菜鸟入门(超详细)

    Linux是开源的操作系统,它的命令行界面,尤其是Shell编程,对于系统运维人员和开发者来说是至关重要的工具。本文将深入浅出地介绍Linux的基础知识,特别是Shell编程,为初学者提供一个全面的学习路径。 首先,我们...

Global site tag (gtag.js) - Google Analytics