SHELL编程基础(二)
编写一个简单的程序
#this is sample //注释
echo "hello,welcome to Fedora 6"
echo "Logged in $USER."
env|grep PATH
echo $PATH
1、变量
1)用户变量
VAL=val
如
St?nt=tom
echo St?nt
echo $St?nt
变量引用符“$”
注意:单引号和反斜杆都可以阻止使用变量的值。双引号不会阻止变量替换,但是可以关闭大多数其他字符的特殊意义。
当使用变量作为一个参数执行一个命令时,shell将用该变量的值来代替变量名,如果变量的值包含特殊字符,如*,?,等,还会进行变量扩展。如果用””引号括起来,可以阻止bash对展开的变量进行路径名扩展。
删除变量用unset $St?nt.
2)变量属性
a、只读,readonly
b、declare,typest
-a 数组变量
-f 函数名变量
-i 整形变量
-r 只读
-x 输出变量
默认情况下,变量的值作为字符串存放。
3)全局(环境)变量
全局变量全部用大写字母。
系统变量可以通过继承声明并初始化,也可以在shell启动时声明并初始化。可以通过命令行方式或者在初始化文件中为这些变量指定值。对于那些不由shell自动输出的变量,用户必须使用export,setenv使这些变量也可以被子shell访问。
HOME/~ 用户主目录
PATH shell搜索命令的目录
关于如何设置PATH,可以参见:
Fedora中的环境变量设置
http://blog.163.com/zhoumhan_0351/blog/static/399542272010521114234850/
MAIL 用户邮件
PS1 第一个提示符,可以使用的符号如下:
\:如果一行命令没有打完可以输入\来继续输入没有打完的命令称之为续行
\!:显示改命令的历史编号
\#:显示SHELL激活后当前命令的历史编号
\$:显示当前用户变量值,如果当前用户是root就显示#是其他用户就显示$
\\:显示一个反斜杠
\d:显示一个当前日期
\h:显示运行该SHELL的计算机主机名
\n:打印一个换行符导致提示符换行跟C语言语法类似
\s:显示当前SHELL的名称
\t:显示当前时间
\u:显示当前用户的用户名
\W:显示当前工作目录基准名
\w:显示当前工作目录
\@ 按照12小时制,AM/PM格式显示的当前时间
\! 当前事件编号
常用的系统变量:
BASH_ENV
CDPATH
COLUMNS
FCEDIT
HOME
IFS
PS1
PS2
PWD
UID
4)位置变量和特殊变量
用set来进行设置
#this is sample
if [$# -eq 0 ]
then
echo "not provide name"
else
echo "your name is "$1
fi
5)数组变量
定义:
name=(ele1 ele2 ele3 ...)
$aYear=(Spring Summer Autumn Winter)
declare -a aYear='([0]="Spring" [1]="summer")'
引用数组中的第三个元素的值:
echo $(aYear[2])
使用下标[*],[@]都可以提取整个数组元素,但是加上比引号时意义不同,@把原数组的内容复制到一个新数组中,生成的数组和原来的一样,而*符号是把原数组中所有元素当成一个元素复制到新数组中,生成的数组只有一个元素。
参考
[1] PS1设置相关http://dong926.blog.51cto.com/386907/179816/
[2]LINUX一些常用命令以及BASH基本变量