分类: LINUX
2012-02-27 09:40:07
变量的声明:在shell中变量不需要事先声明,不必显示声明
变量的赋值:VAR=value,不允许有空格。如:a=100
变量的数据类型:shell中的变量无数据(弱)类型!同一变量可以存放不同类型的值。
如:a=1.25 a=100 a=“Hello”
变量的获取:在shell中使用$或者${} ,如:$date,${date}
Unset:用于删除已经定义的环境变量或本地变量。Unset 变量名
bash的使用技巧shell维护一个可以用alias和 unalias内建命令来设置或者取消别名列表。用 alias 命令不带选项的时候显示当前shell所知的别名列表。
自定义时,等号两边不能有空格:alias list=‘ls -l’ alias lsh=‘ls *.sh
Bourne shell保留变量变量名 | 定义 |
auto_resume | 这个变量控制shell如何与用户交互和作业控制。 |
BASH | 用于执行当前Bash实例的全路径。 |
BASH_ENV | 如果这个变量在Bash调用执行一个shell脚本时已被设置,它的值将被展开并用作在执行脚本前读取的启动文件名。 |
BASH_VERSION | 当前Bash实例的版本号。 |
BASH_VERSINFO | 一个只读变量数组,它的成员保存这个Bash实例的版本信息。 |
COLUMNS | select 内建命令来决定打印选择列表时终端宽度。在收到 SIGWINCH 信号时自动设置。 |
COMP_CWORD | 包含当前光标位置的字的 ${COMP_WORDS} 的一个索引。An index into ${COMP_WORDS} of the word containing the current cursor position. |
COMP_LINE | 当前命令行。 |
COMP_POINT | 指明相对于当前命令起点的当前光标位置。 |
COMP_WORDS | 一个由当前命令行中单个词组成的变量数组。 |
COMPREPLY | 一个变量数组,Bash从中读取由一个可编程完整设备调用的一个shell函数生成的可能的完成。An array variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion facility. |
DIRSTACK | 一个保存当前目录栈内容的变量数组。 |
CDPATH | 一个由冒号分割的目录列表作为内建命令 cd 的搜索路径。 |
HOME | 当前用户的home目录;默认为内建命令 cd 。这个变量的值同样被~扩展使用。 |
IFS | 分割域的一个字符的列表;用于shell把词分开作为扩展。 |
如果这个变量设成一个文件名并且 MAILPATH 变量没有设置,Bash在指定文件中通知用户邮件的到达。 | |
MAILPATH | 一个用冒号分隔的文件名列表,shell周期性地从这个文件里检测新邮件。 |
OPTARG | getopts 内建命令处理的最后的选项参数的值。 |
OPTIND | 最后一个由 getopts 内建命令处理的选项参数的索引号。 |
PATH | 一个用冒号分隔的目录列表,shell从这些目录里寻找命令。 |
PS1 | 主要提示符。默认值是 “'\s-\v\$ '”。 |
PS2 | 次要提示符。默认值是 “'> '”。 |
字符 | 定义 |
$* | 展开为位置参数,从1开始。当扩展发生在双引号时,它展开成一个单独的词,每个参数的值由 IFS 特殊变量的第一个字符分隔。 |
$@ | 展开为位置参数,从1开始。当在双引号里展开时,每个参数展开成独立的词。 |
$# | 把位置参数展开为十进制数字。 |
$? | 展开成最近执行的前台管道程序的退出状态。 |
$- | 一个连字符展开为当前选项标志 内部命令集 或者那些shell自己的集(如-i) |
$$ | 展开成shell的进程ID。 |
$! | 展开成最近在后台(异步)执行的命令的进程ID。 |
$0 | 展开成shell或者shell脚本名。 |
$_ | 下划线变量在shell启动时设置,包含shell的绝对文件名或者作为参数列表被执行的脚本。随后,它展开为前一个命令扩展后的最后一个参数。它同样设置为每个执行程序的全路径,放在那个命令的输出环境中。当检查邮件时,这个参数保存邮件文件的名字。 |
转义字符:“\”
避免下一个字符被shell解释
echo常见-n(禁用转义字符) -e(可以使用转义字符)
#!/bin/bash
echo -e "this 3 lines\n\n\n"
echo "ok"
echo "enter you name:"
read name
echo "enter you password:"
read password
echo
$name $password
替换 | 语法 | 含义 |
历史 | ! | 前一个命令行 |
大括号 | {} | 指定的文本 |
代字号 | ~username | 用户的主目录 |
变量 | $,${...} | shell 和环境变量 |
算术 | $((...)) | 算术运算 |
命令替换 | `...` , $(...) | 运行在子 shell 中的命令的输出 |
路径名 | *,?,[...],[^...] | 文件系统中匹配的文件名 |
通配符
用于匹配的字符称为通配符,例如:
* 匹配任意字符或字符串,包括空字符串
? 匹配任意一个字符
[...]匹配方括号中列出的任何单字符
如:
ls /dev/ttyS*
ls test0?.txt
ls test[0-2].txt
ls test[012][0-9].txt
shell命令行的扩展与替换-命令替换命令替换
命令替换允许一个命令的输出来替换这个命令本身。命令替换在一个命令这样封装的时候发生:
$(command) 或`command` (老式语法)
如:
date=$(date)
echo $date
shell命令行的扩展与替换-单引号与双引号单引号(‘’)用于保持在引号内的每个字符的字面值。
双引号保持引号内的所有字符的字面值,除了$,``,\