能解释下吗

sh/bash/dash/ksh/zsh等Shell脚本
回复
qscf_520
帖子: 9
注册时间: 2007-01-29 14:46

能解释下吗

#1

帖子 qscf_520 » 2010-05-21 18:24

asjk_CONF_DIR=${asjk_CONF_DIR:-/etc/asjk/etc/conf}
asjk_CONF_DIR为变量,怎么${ }是什么意思asjk_CONF_DIR:-这又怎么理解啊?

IP_GROUP_PATH=/etc/asjk/sbin/ip_group
rm -rf ${IP_GROUP_PATH}/* ===>rm -rf $IP_GROUP_PATH/*不可以这样吗?

/bin/echo "" 2>/dev/null | awk ' ===>为什么在脚本中用awk的时候,经常看到echo "" |这个空值给awk处理。
.....
hrbeu06ws
帖子: 100
注册时间: 2008-09-25 16:06

Re: 能解释下吗

#2

帖子 hrbeu06ws » 2010-05-22 10:16

asjk_CONF_DIR=${asjk_CONF_DIR:-/etc/asjk/etc/conf}
这个是Shell的参数展开。意思是,如果变量asjk_CONF_DIR未定义,则返回默认值为/etc/asjk/etc/conf,即 asjk_CONF_DIR=/etc/asjk/etc/conf
rm -rf ${IP_GROUP_PATH}/* ===>rm -rf $IP_GROUP_PATH/*不可以这样吗?
这个我试了一下,应该是可以的。
/bin/echo "" 2>/dev/null | awk ' ===>为什么在脚本中用awk的时候,经常看到echo "" |这个空值给awk处理。
至于这个,我想应该是考虑安全性吧!确保awk有一个输入。
Power cloaked in simplicity !
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
联系:

Re: 能解释下吗

#3

帖子 xiooli » 2010-05-22 10:35

1,答案见ls
2,${IP_GROUP_PATH} 和 $IP_GROUP_PATH 是一样的,但是比如有另外一个变量叫$IP_GROUP,你要运行 比如 echo $IP_GROUP_PATH, 那么,出现的结果就不知道是 $IP_GROUP的值和'_PATH' 还是 $IP_GROUP_PATH的值,用括号包起来避免歧义。
3,awk 必须要有输入,没有输入不能继续处理,当然也可以用 awk 'BEGIN{bulabula}',这样就不要 echo 一个空值了。
qscf_520
帖子: 9
注册时间: 2007-01-29 14:46

Re: 能解释下吗

#4

帖子 qscf_520 » 2010-05-23 12:46

thanks
hrbeu06ws 、xiooli
回复