学习笔记四"/>
shell学习笔记四
变量、判断、重复动作export , readonly
语法:export name[=word]...
export -p 显示当前环境
readonly name[=word]
readonly -p
用途:export用于修改或者打印环境变量,readonly则使得变量不得修改
export可以将新的变量添加到环境中: PATH=$PATH:/usr/local/bin
export PATH
如果要从程序中的环境中删除变量,则要使用env命令,env也可临时改变环境变量的值:
env -i PATH=$PATH HOME=$HOME LC_ALL=C awk '...' file1 file2 -i的意思是初始化环境变量也就是丢弃任何继承值,仅传递命令行上指定的变量给程序使用
unset命令从执行中的shell中删除变量与函数,默认情况下,它会解除变量设置,也可以加上-v来完成:
unset full_name 删除full_name变量
unset -v first middle last 删除其他变量
unset -f function_name 删除function_name函数
env语法: env [-i] [var=value ...] [command_name [arguments ...]]
用途:当command_name被env执行时,可针对command_name继承而来的环境有更细致的控制
-i 忽略继承的环境,仅仅使用命令行上所给定的变量与值
unset语法:unset [-v] variable ... 删除指定变量
unset -f function_name ... 删除指定函数
位置参数:指的是shell脚本的命令行参数,同时也表示在shell函数内的函数参数。
特殊“变量”提供对传递的参数的总数的访问,以及一次对所有参数的访问
$#:提供传递到shell的脚本或者函数的参数的总数,当你是为了处理选项和参数而建立循环时,它会很有用
$*, $@:一次表示所有的命令行参数,这两个参数可用来把命令行参数传递给脚本或函数所执行的程序
"$*":将所有的命令行参数视为单个字符串
"$@":将所有的命令行参数视为单独的个体,也就是单独的字符串
shift命令用来截去(lops off)来自列表的参数,由左开始,一旦执行shift,$1的初始值会永远消失,取而代之的是$2的旧值。$2的值变成$3的旧值,以此类推。单纯地使用shift等同于 shift 1.
POSIX内置的shell变量
# 目前进程的参数个数
@ 传递给当前进程的命令行参数
* 当前进程的命令行参数
- 在引用时给予shell的选项
? 前一命令的退出状态
$ shell进程的进程编号
0 shell程序的名称
! 最近一个后台命令的进程编号
ENV 一旦引用,则仅用于交互式shell中,$ENV是可展开的参数
HOME 根目录
IFS 内部的字段分隔器
LANG 当前locale的默认值
LC_ALL 当前locale的名称
LC_COLLATE 用来排序字符的当前locale名称
LC_CTYPE 在模式匹配期间,用来确定字符类别的当前locale的名称
LC_MESSAGES 输出信息的当前语言的名称
LINENO 刚执行过的行在脚本或函数内的行编号
NLSPATH 在$LC_MESSAGES所给定的信息语言里,信息目录的位置
PATH 命令的查找路径
PPID 父进程的进程编号
PS1 主要的命令提示字符串,默认为$
PS2 行继续的提示字符串
PS4 以set -x设置的执行跟踪的提示字符串,默认为+
PWD 当前的工作目录
特殊变量$$可以在写脚本的时候用来建立具有唯一性的文件名,多半是临时的,这是根据shell的进程编号建立文件名。
执行命令之后可以使用echo $?来查看命令执行结束的状态
0 表示成功退出
>0 在重定向或单词展开期间失败
1-125 命令不成功退出,特定的退出值含义是由各个单独的命令定义的
126 命令找到了,但文件无法执行
127 命令找不到
>128 命令因收到信号而死亡
exit语法: exit [exit-value]
用途:目的是从shell脚本返回一个退出状态给脚本的调用者;使用程序的退出状态最简单就是使用if语句
test语法: test [expression]
[ [expression] ]
用途:为了测试shell脚本里的条件,通过退出状态返回其结果。
getopts语法: getopts option_spec variable [ arguments ...]
用途:简化参数处理,并且让shell脚本可以轻松地匹配于POSIX参数处理惯例
更多推荐
shell学习笔记四
发布评论