shell脚本快速入门

1.HelloWorld

代码

#!/bin/bash	
echo "Hello World"

#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell
echo 命令用于向窗口输出文本
运行

# 将上面的代码保存为hw.sh并按:wq保存
[root@ruozedata001 learn_shell]# vim hello.sh
# 使脚本具有执行权限
[root@ruozedata001 learn_shell]# chmod u+x hello.sh
# 执行脚本
[root@ruozedata001 learn_shell]# ./hello.sh
Hello World

2.debug一下!shell debug模式

代码

#!/bin/bash	-x
echo "Hello"
echo "World"

#!/bin/bash后添加-x进入debug模式
运行

[root@ruozedata001 learn_shell]# vim helloWithDebug.sh
[root@ruozedata001 learn_shell]# chmod u+x helloWithDebug.sh
[root@ruozedata001 learn_shell]# ./helloWithDebug.sh
+ echo hello
hello
+ echo world
world

3.变量定义与引用

代码

#!/bin/bash
NAME="Rand"
DATE1="date"	
DATE2=`date` #

echo "I am ${NAME}"
echo "I am $NAME"
echo ${DATE1}
echo ${DATE2}

使用 变量=“字符串” 来定义变量,注意变量名和等号之间不能有空格

  • 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。
    在变量名前面加美元符号就可以使用变量($NAME),但最好使用美元符号再加大括号的方式( ${NAME} )

静态定义变量:
k=“v” ‘v’ v
动态定义变量(运行时才产生值):
k=`v` #使用反引号
运行

[root@ruozedata001 learn_shell]# vim var.sh 
[root@ruozedata001 learn_shell]# chmod u+x var.sh 
[root@ruozedata001 learn_shell]# ./var.sh 
I am Rand
I am Rand
date
Sat Aug 24 19:52:32 CST 2019

4. 参数传递

代码

#!/bin/bash

echo "执行的文件名:$0"
echo "第一个参数:$1" 
echo "第二个参数:$2"  
echo "参数共有 $# 个"
echo "所有参数: $*" 
echo "当前进程PID: $$"

运行

[root@ruozedata001 learn_shell]# vim param.sh 
[root@ruozedata001 learn_shell]# chmod u+x param.sh 
[root@ruozedata001 learn_shell]# ./param.sh java python c++ 
执行的文件名:./param.sh
第一个参数:java
第二个参数:python
参数共有 3 个
所有参数: java python c++
当前进程PID: 4087

5.数组

代码

#!/bin/bash
ARR=(java python c++ kotlin)

echo "打印所有元素: ${ARR[@]}"
echo "打印指定下标元素(下标从0开始) ${ARR[0]}"
echo "打印数组长度: ${#ARR[@]}"

运行

[root@ruozedata001 learn_shell]# vim array.sh
[root@ruozedata001 learn_shell]# chmod u+x array.sh 
[root@ruozedata001 learn_shell]# ./array.sh
打印所有元素: java python c++ kotlin
打印指定下标元素(下标从0开始) java
打印数组长度: 4

note: 定义数组时成员必须用空格隔开

6.判断if-else&if-elseif

#!/bin/bash
# if-else
echo "if-else"
A="abc"
B="edf"
if [ ${A} == ${B} ]
then
    echo "=="
else
    echo "!="
fi

# if-esleif
echo "if-elseif"
A="abc"
B="def"

if [ "${A}" == "${B}" ]
then
        echo "=="
elif [ "${A}" == "abc" ]
then
        echo "==2"
else
        echo "!="
fi

note:

  • if 后面的 [ ] 前后元素均必须留空格
  • == 前后也必须需要空格
    运行
[root@ruozedata001 learn_shell]# vim if.sh
[root@ruozedata001 learn_shell]#  chmod u+x if.sh
[[root@ruozedata001 learn_shell]# ./if.sh 
if-else
!=
if-elseif
==2

7.循环for&while

代码

#!/bin/bash

echo "for 第一种用法"
for loop in 1 2 3 4 5
do
    echo ${loop}
done

echo "for 第二种用法"

for ((i=1;i<=5;i++))
do
    echo ${i}
done

echo "while 用法"

LOOP=1
while (($LOOP<=5))
do
    echo ${LOOP}
    # 每次循环LOOP加一
    let "LOOP++"
done

运行

[root@ruozedata001 learn_shell]# vim loop.sh
[root@ruozedata001 learn_shell]# chmod u+x loop.sh 
[root@ruozedata001 learn_shell]# ./loop.sh
for 第一种用法
1
2
3
4
5
for 第二种用法
1
2
3
4
5
while 用法
1
2
3
4
5

8.字符串分割

代码

#!/bin/bash

S="a,b,c,d,e"
# 固定写法
OLD_IFS="$IFS"
IFS=","
ARR=($S)
IFS="$OLD_IFS"

for X in ${ARR[*]}
do 
    echo $X
done

字符串分割写法是固定的,记住就行
运行

[root@ruozedata001 learn_shell]# vim split.sh
[root@ruozedata001 learn_shell]# chmod u+x split.sh 
[root@ruozedata001 learn_shell]# ./split.sh 
a
b
c
d
e

8.grep&sed&awk

grep 、sed、awk被称为linux中的"三剑客"。功能非常强大。
grep 更适合单纯的查找或匹配文本
sed 更适合编辑匹配到的文本
awk 更适合格式化文本,对文本进行较复杂格式处理
可用参考这篇博文:
http://www.zsythink.net/archives/1336/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值