Shell 脚本是底层用 C 语言实现的程序,它的初衷是方便使用者调用 Linux 操作系统,可以看做是基于 Linux 操作系统的一种软件。现在的服务器基本都是基于 Linux 的定制化,使用 shell 脚本可以方便地使用服务器的各种资源。现在的 MacOS 初始化时,自带 shell 脚本解释器。 Windows 系统下,需要手动安装。下面我基于 MacOS , 在 sublime3 编辑器下, 简要记录下 shell 的基本语法。
1 Hello World
打开 teminal ,在桌面目录 cd ~/Desktop
,touch test.sh
创建 test.sh 文件。使用 sublime3 打开文件,输入如下内容:
#!/bin/bash
echo "Hello World !"
保存后,在 teminal 输入 sh test.sh
, 就能看到 Hell0 World 的输出。文件的第一行指明了 shell 解释器所在的位置,输入 which sh
,能够查到本地 shell 解释器所在的位置。
2 基本类型
shell 中定义整数、浮点数和字符串等基本类型:
a=10
str1="abc"
str2="cde"
echo "a: ${a}\nstr1: ${str1}\nstr2: ${str2}"
需要注意=
两边不能有空格,定义比较严格。引用变量的方式采用 ${var}
的方式。
数组的定义和引用方式:
arr=(1 2 3)
echo "引用个别元素arr[0]: ${arr[0]}
\n引用全部元素arr: ${arr[*]}
\n引用数组长度arr.length: ${#arr[*]}"
3 函数
shell 定义函数很简单:
function_name(){
arr=(1 2 3)
echo "引用个别元素arr[0]: ${arr[0]}
\n引用全部元素arr: ${arr[*]}
\n引用数组长度arr.length: ${#arr[*]}"
}
function_name
调用函数时,传递的参数通过空格分隔,引用通过 $数字
匹配传递的参数:
function_test(){
echo "第一个参数: $1 \
\n第二个参数: $2"
}
function_test 1 2
通过 $?
,获取函数返回值:
function_re(){
return 2
}
function_re
a=$?
echo "${a}"
4 比较运算符
4.1 整数比较
符号 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
-gt | 大于 |
-ge | 大于等于 |
-lt | 小于 |
-le | 小于等于 |
使用:
a=1
b=2
if [[ ${a} == ${b} ]]; then
echo "等于"
elif [[ ${a} -lt ${b} ]]; then
echo "小于"
elif [[ ${a} -gt ${b} ]]; then
echo "大于"
fi
4.2 字符串比较
string="abcd"
echo ${#string} #输出 4
echo ${string:0:2} #ab
if [[ ${string} =~ "ab3" ]]; then
echo "包含"
else
echo "不包含"
fi
5 读取输入
read -p
命令获取命令行输入:
read -p "please input your name: " first last
echo "Hello $first.$last"
通过参数 -n 个数
可以控制读取的字符个数:
read -n 1 -p "input only one char: " a
echo "\nread ${a}"
以上命令,基本能够满足简单日常的脚本使用。 shell 语法比较简单,有些地方也比较怪异,有疑问时,可以通过 man sh
查看 Mac 自带帮助。
网友评论