shell脚本语法 Linux基础4-Shell语法

09/11 10:25:32 来源网站:辅助卡盟网

shell脚本语法 Linux基础4-Shell语法

#! /bin/bash

来指明bash为脚本解释器。

1 概论1.1 脚本示例

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

1.2 运行方式

# 第一种
chmod +x test.sh # 使脚本具有可执行权限
./test.sh # 当前路径下执行
# 第二种
bash test.sh # 用解释器输出

2 注释2.1 单行注释

每行中#之后均为注释.

# 这是一个注释
echo "My name is yrx" # 这也是一个注释

2.2 多行注释

格式:

:<

其中EOF可以替换为任意其它字符串。例如:

:<

3 变量3.1 定义变量

定义变量,不需要加 $ 符号,例如:

name1='yrx' # 单引号定义字符串
name2="yrx" # 双引号定义字符串
name3=yrx   # 不加引号定义字符串

定义变量时,等号两边不能有空格;定义变量的时候变量都是字符串,但当变量需要是整数时,会自动把变量转换成整数;被声明为只读的变量无法被unset删除;bash可以用来开一个新的进程,exit或ctrl+d退出新的bash;字符串中,不加引号和双引号效果相同.3.2 使用变量

使用变量shell脚本语法,需要加上 \$ 符号,或者 \${} 符号。花括号是可选的,主要为了帮助解释器识别边界。

name=yrx
echo $name          # 输出yrx
echo ${name}        # 输出yrx
echo ${name}dfjb    # 输出yrxdfjb

3.3 只读变量

使用readonly或者declare可以将变量变为只读。

name=yrx
readonly name
declare -r name    # 两种方法都可以
name=yxr           # 会报错

3.4 删除变量

unset可以删除变量。

name=yrx
unset name
echo $name  # 输出空行

3.5 变量类型自定义变量(局部变量)——子进程不能访问的变量。环境变量(全局变量)————子进程可以访问的变量。

自定义变量改成环境变量:

name=yrx        # 定义变量
export name     # 第一种办法
declare -x name # 第二种办法

环境变量改为自定义变量

export name=yrx # 定义环境变量
declare +x name # 改为自定义变量

tmux经ctrl a + % 分屏得到的两个界面实际上是两个bash,在一个bash中自定义的bash变量仅可以被当前bash访问,通过bash命令开启的子进程也无法访问。export后变量变为环境变量,就可以被全局访问。

3.6 字符串

字符串可以用单引号、双引号、不用引号来定义。

hadoop中 shell脚本语法学习_shell 脚本语法 数组_shell脚本语法

单引号与双引号的区别:

name=yrx
echo 'hello, $name \"hh\"' # hello, $name \"hh\"
echo "hello, $name \"hh\"" # hello, yrx "hh"

获取字符串长度:

name="yrx"
echo ${#name} # 3

提取子串:

name="hello,yrx"
echo ${name:0:5} # 提取从0开始的5个字符

4 默认变量4.1 文件参数变量

在执行shell脚本时,可以向脚本传递参数。\$1是第一个参数,\$2是第二个参数,依此类推。

特殊地,\$0是文件名(包含路径)。

#! /bin/bash
echo "filename:"$0
echo "first var:"$1
echo "second var:"$2
echo "third var:"$3