最近在学linux shell编程,以下是我的一些学习笔记(学习网站:www.runoob.com/linux/linux… :
- Shell,翻译过来就是壳子,是用来帮助操作内核的,由于无法直接操作系统内核,所以Shell就像个大壳子被用来包裹在系统外面操作其内核,是一种脚本编程语言,也是连接Linux用户和内核的软件;
- 不同的系统有不同的内核,同样,shell也分为几种:sh、csh、bash等。
#!是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,后面接不同的参数表示不同的解释器。例如:
#!/bin/bash #bash解释器
#!/bin/sh #sh解释器
#!/usr/bin/csh #csh解释器
- 执行Shell脚本的两种方法:
#!/bin/bash
echo "Hello World !" #echo命令用于向窗口输出文本
a.作为可执行程序
将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
b.作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 Shell 脚本的文件名,如:
/bin/sh test.sh
/bin/php test.php
这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
- Shell定义变量的注意点:
- 定义变量名得遵循规则
# 有效变量名
RUNOOB
LD_LIBRARY_PATH
_var
var2
#无效变量名
?var=123
user*name=runoob
- 已经被定义的变量可以被重新定义,使用变量时,在变量名前加上
'$' readonly命令定义只读变量,unset命令可删除变量- 字符串类型单引号和双引号的区别:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
- 双引号里可以有变量
- 双引号里可以出现转义字符
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1 # 输出结果为:hello, runoob ! hello, runoob !
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2 $greeting_3 # 输出结果为:hello, runoob ! hello, ${your_name} !
| 参数处理 | 说明 |
|---|---|
| $# | 传递到脚本的参数个数 |
| $* | 以一个单字符串显示所有向脚本传递的参数。 如"1 n"的形式输出所有参数。 |
| $$ | 脚本运行的当前进程ID号 |
| $! | 后台运行的最后一个进程的ID号 |
| $@ | 与@"用「"」括起来的情况、以"2" … "$n" 的形式输出所有参数。 |
| $- | 显示Shell使用的当前选项,与set命令功能相同。 |
| $? | 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 |