Shell脚本编程笔记(1)

Shell脚本编程笔记

如何运行

  1. chmod +x使文件具有可执行权限, 直接运行
  2. 直接调用解释器, 将脚本文件作为参数传入 (比如bash hi.sh)
  3. 使用source(也可用.代替)执行文件

一般使用第一种,方式3执行的方式与前两种都不同:使用source执行shell脚本时, 不会创建子进程, 而是在父进程中直接执行。

变量

  1. Shell中的变量只有字符串这一种类型
  2. Shell中变量名与变量值没有长度限制
  3. Shell的变量也允许比较操作和整数操作, 只要变量中的字符串为数字

定义变量

variable_name=ghui

需要注意:=两边不能加空格, 当赋值语句包含空格时请加引号(单引号/双引号均可)比如:

variable_name="ghui's blog"

Shell中的变量可以分为两种类型:

  • 局部变量 (定义变量时在前面加local修饰符)
  • 全局变量 (定义变量时不加任何修饰符)

局部变量的可见范围是代码块或函数内,全局变量在全局范围内可见。

使用变量

name=ghui
echo $name
echo ${name} #{} 为了帮助解释器识别变量边界, 非必须

在使用变量时还有一个地方需要注意,即: 被双引号括起来的变量会发生变量替换, 单引号不会

#! /bin/sh
str='abc'
echo "1 print $str"
echo '2 print $str'

输出:

1 print abc
2 print $str

常用的字符串操作

name="shell"
sayHi="hello, "$name" !"
sayHi2="hello, ${name} !"
echo $sayHi $sayHi2

输出

hello, shell! hello, shell!

获得字符串长度

string="abcd"
echo ${#string} #输出:4

截取字符串

str="hello shell"
echo ${str:2}  #输出: llo shell
echo ${string:1:3} #输出:ell

if/else流程控制

#! /bin/sh
a=1
if [ $1=$a ]
then
    echo "you input 1"
elif [ $1=2 ]
then
    echo "you input 2"
else
    #do nothing
    echo " you input $1"
fi

这里有两个地方需要注意, 如果某个条件下的执行体为空, 则不能写这个条件。另外, [ ]两边一定要加空格。

switch流程控制

case expression in
    pattern1)
        do something... ;;
    pattern2)
        do something... ;;
    pattern2)
        do something... ;;
    ...
esac

注意:
1. ;;相当于其它语言中的break
2. 每个pattern之后记得加)
3. 最后记得加esac (即反的case)

for循环

for name [in list]
do
    ...
done

其中,[]括起来的in list, 为可选部分, 如果省略in list则默认为in “$@”,即你执行此命令时传入的参数列表

while循环

while condition
do
    do something...
done
#! /bin/sh
i=0
while ((i<5))
do
    ((i++))
    echo "i=$i"
done

until循环

until condition
do
    do something...
done
#!/bin/sh
i=5
until ((i==0))      # 这里是i==0
do
    ((i--))
    echo "i=$i"
done

跳出循环

break,continue

函数

要定义一个函数, 可以使用下面两种形式:

function funcname()   |   funcname ()
{                     |   {
    do something      |       do something
}                     |   }                
  1. 函数必须先定义后使用
  2. 如果在函数中使用exit会退出脚本, 如果想退回到原本函数调用的地方, 则可使用return

向脚本传递参数

shell脚本传递参数, 非常简单, 只需要在你执行命令的后面跟上即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值