Shell | 基础知识点实例整理(一)

写一个简单的Shell脚本

代码如下:

#!/bin/bash

#使用echo输出一行字符串
echo "hello Linux"

练习使用Shell变量

代码如下:

#!/bin/bash

MySystem="CentOS"
echo "hello $MySystem"

练习使用Shell的命令行参数

代码如下:

#!/bin/bash
Sum=`expr $1 + $2`
echo "$1 + $2 = $Sum"

练习使用Shell的命令替换

代码如下:

#!/bin/sh

FilePath=`pwd`
echo "Current Path is: $FilePath"

练习使用Shell的变量替换

#!/bin/bash

Name="zhangsan"
Age=23
#Salary=12000
echo "姓名: $Name; 年龄: $Age; 工资: ${Salary-"空"}"

练习使用Shell的算术运算符

代码如下:

#!/bin/bash

Num1=`expr $1 + $2`
Num2=`expr $1 - $2`
Num3=`expr $1 \* $2`
Num4=`expr $1 / $2`
Num5=`expr $1 % $2`
echo "$1 + $2 = $Num1"
echo "$1 - $2 = $Num2"
echo "$1 * $2 = $Num3"
echo "$1 / $2 = $Num4"
echo "$1 % $2 = $Num5"

练习使用Shell的关系运算符和布尔运算符(分支结构)

代码如下:

#!/bin/bash

echo -n "请输入成绩:"
read Score
if [ $Score -ge 0 -a $Score -lt 60 ]
then
        echo "不及格"
elif [ $Score -ge 60 -a $Score -lt 80 ]
then
        echo "通过"
elif [ $Score -ge 80 -a $Score -le 100 ]
then
        echo "优秀"
else
        echo "输入的成绩错误!"
fi

练习字符串的比较运算

代码如下:

#!/bin/bash
Str1="hello world"
Str2="hello world"
if [ "$Str1" = "$Str2" ]
then
        echo "true"
else
        echo "false"
fi

练习使用Shell的文件测试运算符

代码如下:

#!/bin/bash

#echo $HOME

Files=$HOME/*
#文件个数
FileCount=0
#文件夹个数
FolderCount=0

for File in $Files
do
        echo $File

        if test -f $File
        then
                FileCount=`expr $FileCount + 1`
        fi
        if test -d $File
        then
                FolderCount=`expr $FolderCount + 1`
        fi
done
echo "文件夹个数:$FolderCount"
echo "普通文件个数:$FileCount"

练习Shell的字符串的操作

代码如下:

#!/bin/bash
Str="Ubuntu"
Str2="hello SQL Server"
echo "${Str}的字符个数:${#Str}"
echo ${Str2:6:3}

练习case-esac结构(类似switch-case结构)

代码如下:

#!/bin/bash

#echo $HOME
Files=$HOME/*
Option=$1

case $Option in
        -f)     for File in $Files
                do
                        if test -f $File
                        then
                                echo $File
                        fi
                done
                ;;
        -d)     for File in $Files
                do
                        if test -d $File
                        then
                                echo $File
                        fi
                done
                ;;
        *)      echo "`basename $0`:usage:[-f] | [-d]"
                echo "[-f]: 显示用户家目录下的所有普通文件"
                echo "[-d]: 显示用户家目录下的所有子文件夹"
                exit 1
                ;;
esac

设计一个猜拳游戏的Shell脚本(循环结构)

代码如下:

#!/bin/bash

echo "-----猜拳游戏-----"
while [ "1" = "1" ]
do
        PC=$((RANDOM%3))
        echo -n "请输入您的选择(1——石头 2——剪刀 3——布):"
        read Player
        if [ ${Player} -ne 1 -a ${Player} -ne 2 -a ${Player} -ne 3 ]
        then
                echo "您的选择无效!"
                continue
        fi

        case $Player in
                1)      echo "您的选择是:<石头>"
                        ;;
                2)      echo "您的选择是:<剪刀>"
                        ;;
                3)      echo "您的选择是:<布>"
                        ;;
                *)      ;;
        esac

        case $PC in
                1)      echo "我的选择是:<石头>"
                        ;;
                2)      echo "我的选择是:<剪刀>"
                        ;;
                3)      echo "我的选择是:<布>"
                        ;;
                *)      ;;
        esac

        if test ${Player} -eq ${PC}
        then
                echo "平局"
        elif [[ (${Player} == 1 && ${PC} == 2) || (${Player} ==  2 && ${PC} -eq 3) || (${Player} == 3 && ${PC} == 1) ]] 
        then
                echo "恭喜!赢了!"
        else
                echo "很遗憾!您输了!"
        fi

        echo -n "再来一局?(y/n)"
        read YesOrNo
        if test $YesOrNo = "y" -o $YesOrNo = "Y"
        then
                continue
        else
                break
        fi

done

echo "游戏结束!"

练习输出重定向

Linux指令如下:
ping -c 4 192.168.1.7 > my.log

定时执行Shell脚本

*    *    *    *    *
分    时    日    月    星期几

Shell脚本文件test.sh的代码如下:

#!/bin/bash

Str=`ls /home/hadoop/logs`

if [ "$Str" != "" ]
then
        cd /home/hadoop/logs
        rm -rf *
        if test $? -eq 0
        then
                echo "删除成功!"
        else
                echo "删除失败!"
        fi
else
        echo "没有文件!"
fi

设置定时任务:
1)使用crontab打开编辑器,添加任务,保存退出
2)使用crontab查看定时任务

[root@lsp ~]# crontab -e
no crontab for root - using an empty one
*/5 * * * * /home/hadoop/scripts/test.sh
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
"/tmp/crontab.XXXXbeJJY9" 1L, 41C written
crontab: installing new crontab
[root@lsp ~]# crontab -l
*/5 * * * * /home/hadoop/scripts/test.sh
[root@lsp ~]# 

作者:敢想敢测
链接:https://www.jianshu.com/p/97fcc2ac9120
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容