shell基础
Shell介绍
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
第一个程序
当我们运行时会出现以下问题:
解决方案:
添加权限:
第一种:
chmod u/g/o+r/w/x 文件名
u:用户
g:组
o:其他
r:读
w:写
x:执行
第二种
用数字代表
4:代表读
2:代表写
1:代表执行
Shell 变量
字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。
单引号字符串的限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字符串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号的优点:
双引号里可以有变量
双引号里可以出现转义字符
拼接字符串
获取字符串长度
提取子字符串
查找子字符串
上面的执行结果:
整数
整数变量: 在一些Shell中,你可以使用 declare 或 typeset 命令来声明整数变量。
数组
定义数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
数组名=(值1 值2 ... 值n)
读取数组
读取数组元素值的一般格式是:
${数组名[下标]}
获取所有数组元素:
使用 @或者* 符号可以获取数组中的所有元素,
获取数组的长度
# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
length=${#array_name[n]}
基本运算符
例如:
两点注意:
表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
完整的表达式要被
包含,注意这个字符不是常用的单引号,在 Esc 键下边。
注意:
乘号()前边必须加反斜杠()才能实现乘法运算;
if...then...fi 是条件语句,后续将会讲解。
在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "" 不需要转义符号 "" 。
流程控制
if else
结果:
for 循环
while 语句
两种输出命令:
echo和printf
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认的 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。