在linux shell 赋值和判断都是等号来表示,它是通过空格来区别二者的不同,var=value表示赋值,等号的左右两边没有空格,而判断var = value,等号的左右两边都有空格。
环境变量是未在当前的进程中定义,而从父进程中继承而来的变量。export 命令用来设置环境变量,支持之后,从当前的shell脚本执行的任何应用程序都会继承这个变量。
我们可以按照自己的需要,在执行的应用程序或者shell脚本中导出特定的变量。
export PATH=“$PATH:/home/user/bin” 这里的冒号相当于windows中环境变量的分号,是一种路径分隔符。
1.命令行执行结果重定向输入到文件中
cmd > file
>等同于1>;对于>>情况也类似(即>>等同于1>>)这里的1表示文件描述符也是默认情况的下的标准输出的文件描述符。
ls + 2>stderr.txt 表示标准错误输出重定向到stderr.txt文件中
当一个命令发生错误并退出时,它会返回一个非0的退出状态,退出状态可以从特殊变量$?中获取。
2.将文件重定向到命令行
cmd < file
3.数组的定义和使用
#!/bin/bash
array_var1=(1 2 3 4 5) #一对括号表示是数组,数组元素用“空格”符号分割开,数组下标从零开始
array_var2[0]="value1"
array_var2[1]="value2"
#访问数组
echo ${array_var1[0]}
echo ${array_var2[0]}
#以清单的形式打印出数组的所有元素
echo "The array_var1 elements:" ${array_var1[*]}
echo "The array_var2 elements:" ${array_var2[*]}
#打印数组的长度
echo "The array_var1 len:" ${#array_var1[*]}
echo "The array_var2 len:" ${#array_var2[*]}
下面给出关联数组的定义和使用:
#!/bin/bash
declare -A ass_array #声明一个关联数组
ass_array['李小明']="09713011" #关联数组姓名和学号进行关联
ass_array['何旭']="09713012"
#访问关联数组
echo "李小明 学号 ${ass_array[李小明]}"
4.函数和参数
Bash同样支持函数,其函数可以定义如下:
function bash_function()
{
echo "function";
}
只要使用函数名就可以调用某个函数。如:bash_function ;
这里也可以传递参数给函数,如:bash_function arg1 arg2 ; #传递两个参数给函数,函数中可以使用如下方式访问函数参数
#!/bin/bash
function bash_function()
{
echo '$0=' $0;#$0表示在命令行中输入运行的脚本名称
echo '$1=' $1, '$2=' $2;#访问参数1和参数2
echo '$@=' "$@";#以列表的方式一次打印所有的参数
echo '$*=' "$*";#类似$@,但是参数被作为单个实体
return 0;
}
bash_function arg1 arg2;
参考文献:
Shantanu Tushar 等
著,门佳等译
.
Linux shell 脚本攻略
[M].2.
北京:人民邮电出版社