configure解释

来源:互联网 发布:人工智能优缺点英语 编辑:程序博客网 时间:2024/05/18 12:36
在configure的第一段就是:
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
 emulate sh
 NULLCMD=:
 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
 # is contrary to our usage. Disable this feature.
 alias -g '${1+"$@"}'='"$@"'
elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
 set -o posix
fi
DUALCASE=1; export DUALCASE # for MKS sh

1    if
if语句测试条件,测试条件返回真( 0)或假(1)后,可相应执行一系列语句。i f语句结构对错误检查非常有用。其格式为:
if 条件1
then 命令1
elif 条件2
then 命令2
else 命令3
fi
很简单,呵呵。
使用i f语句时,必须将t h e n部分放在新行,否则会产生错误。如果要不分行,必须使用命令分隔符。
2             test
写脚本时,有时要判断字符串是否相等,可能还要检查文件状态或是数字测试。基于这些测试才能做进一步动作。Te s t命令用于测试字符串,文件状态和数字。
t e s t一般有两种格式,即:
test condition

[ c o n d i t i o n ]
使用方括号时,要注意在条件两边加上空格。
字符串测试是错误捕获很重要的一部分,特别在测试用户输入或比较变量时尤为重要。字符串测试有5种格式。
l         test “string”
l         test string_op “string”
l         test “string” string_op “string”
l         [string_op string]
l         [“string” string_op “string”]
这里,s t r i n g _ o p可为:
= 两个字符串相等。
!= 两个字符串不等。
-z 空串。
-n 非空串。
3             变量赋值
上述语句中:${ZSH_VERSION+set}就是对变量的赋值操作,ZSH_VERSION和BASH_VERSION都是不同的shell定义的值,且是只读的。对于cygwin来讲,BASH_VERSION的值为3.2.33(18)-release。而其中的加号表示如果设置了v a r i a b l e - n a m e,则重设其值。返回的结果为这个变量最终的值。
其它相关的几个赋值符号为:
Va r i a b l e - n a m e = v a l u e 设置实际值到v a r i a b l e - n a m e
Va r i a b l e - n a m e + v a l u e 如果设置了v a r i a b l e - n a m e,则重设其值
Va r i a b l e - n a m e : ? v a l u e 如果未设置v a r i a b l e - n a m e,显示未定义用户错误信息
Va r i a b l e - n a m e ? v a l u e 如果未设置v a r i a b l e - n a m e,显示系统错误信息
Va r i a b l e - n a m e : = v a l u e 如果未设置v a r i a b l e - n a m e,设置其值
Va r i a b l e - n a m e : - v a l u e 同上,但是取值并不设置到v a r i a b l e - n a m e,可以被替换
因此对于本段代码,if语句的第一个条件将为假,后面的emulate sh当然也就不会执行。而elif的第一个条件则为真。
4             set
set是bash的一个内置命令,man page中对set –o posix的解释是:
change the behavior of bash where the default operation differs from the POSIX standard to match the mode standard(posix mode).
如果命令成功其返回值为0。
5             重定向
linux下常用的重定向命令
command > filename 把把标准输出重定向到一个新文件中
command >> filename 把把标准输出重定向到一个文件中(追加)
command 1 > fielname 把把标准输出重定向到一个文件中
command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
command 2 > filename 把把标准错误重定向到一个文件中
command 2 >> filename 把把标准输出重定向到一个文件中(追加)
command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中(追加)
command < filename >filename2 把c o m m a n d命令以f i l e n a m e文件作为标准输入,以f i l e n a m e 2文件
作为标准输出
command < filename 把c o m m a n d命令以f i l e n a m e文件作为标准输入
command << delimiter 把从标准输入中读入,直至遇到d e l i m i t e r分界符
command <&m 把文件描述符m作为标准输入
command >&m 把标准输出重定向到文件描述符m中
command <&- 关闭标准输入
因此
>/dev/null 2>&1
也就很容易理解了,就是不显示错误消息和命令的输出。
6             export
环境变量用于所有用户进程(经常称为子进程)。登录进程称为父进程。s h e l l中执行的用户进程均称为子进程。不像本地变量(只用于现在的s h e l l)环境变量可用于所有子进程,这包括编辑器、脚本和应用。
传统上,所有环境变量均为大写。环境变量应用于用户进程前,必须用e x p o r t命令导出。环境变量与本地变量设置方式相同。
DUALCASE=1; export DUALCASE # for MKS sh
就是导出了一个称为DUALCASE的环境变量。
原创粉丝点击