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

运行 Shell 脚本有两种方法

1、作为可执行程序
将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本

2、作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh /bin/php test.php

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

删除变量

使用 unset 命令可以删除变量.unset不能删除只读变量

引号

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符

    获取字符串长度

    string=”abcd” echo ${#string} #输出 4

提取子字符串

string=”runoob is a great site” echo ${string:1:4} # 输出 unoo

第一个字符的索引值为 0

查找子字符串

查找字符 io 的位置(哪个字母先出现就计算哪个):

string=”runoob is a great site” echo expr index "$string" io # 输出 4

注意: 以上脚本中 ` 是反引号,而不是单引号 ‘,不要看错了哦。

定义数组

在 Shell 中,用括号来表示数组,数组元素用”空格”符号分割开。定义数组的一般形式为:
array_name=(value0 value1 value2 value3)
array_name[n]=valuen

读取数组

读取数组元素值的一般格式是:
${数组名[下标]}
valuen=${array_name[n]}

获取数组的长度

取得数组元素的个数
length=${#array_name[@]}
# 或者 length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}


Shell 传递参数

向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
其中 $0 为执行的文件名(包含文件路径)

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 “ * “ 等价于 “1 2 3”(传递了一个参数),而 “@” 等价于 “1” “2” “3”(传递了三个参数)。