shell编程(二)
Shell程序的的变量及参数
在shell程序中,数据用变量来存储,使用变量时不需要声明,默认所有变量类型为字符串类型.
这里$*,"$@"和$@的效果是一样的.
使用set设置位置参数.
形如set $(ls -l)
这样的命令则会把ls -l的结果以此作为他的参数.
常见的环境变量
环境变量 | 说明 |
---|---|
$HOME | 当前用户主目录 |
$PATH | 用以搜索命令的目录列表,用:分隔 |
$PS1 | 命令提示符,通常是用$.root用户则是# |
$PS2 | 二级提示符,用来提示后需输入,通常是> |
$IFS | 内部与分隔符 |
变量的声明
在shell中,使用一般变量可以不用声明,可对于一些特殊变量需要声明.
声明格式:
declare [options] [name=[value]]
typeset [options] [name=[value]]
#unset用于删除shell变量
unset name
常用选项options:
-a 声明一个数组array
-f 声明一个函数function
-i 声明一个整数integer
-r 声明只读变量readonly
-x 声明全局变量,可供子进程使用
注:赋值语句中,等号前后不能有空格.
整型变量不可以被赋非整型的值
set用于查看本地定义的shell变量
变量引用
echo $ {name:-string}
当变量(name)存在时,显示变量的值,否则显示string
echo $ {name:=string}
当变量(name)存在时,显示变量的值,否则把string赋给name,并输出
echo $ {name:?string}
当变量(name)存在时,显示变量的值,否则显示name:string
echo $ {name:=string}
当变量(name)存在时,显示变量的值,否则显示空
- 用单引号将值括起来,则不允许对括号中的变量进行替换,且不做shell解释,即屏蔽了括号中特殊字符的含义
例如:
j@Ubuntu:~/pro_shell$ x='$PATH'
j@Ubuntu:~/pro_shell$ echo $x
$PATH
- '\'在Bash中被解释为转义字符,用于去除一个单个字符的特殊意义,保留跟随在之后的字符的字面值.
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15105034.html