这句bash脚本是什么意思?

sh/bash/dash/ksh/zsh等Shell脚本
回复
wwangzhihang
帖子: 54
注册时间: 2006-06-23 7:43
联系:

这句bash脚本是什么意思?

#1

帖子 wwangzhihang » 2009-05-22 17:06

代码: 全选

for v in "$@"; do
    r="${v#*=}"  //??
    l="${v%$r}"  //??
    test "$r" = "${r#* }" || r="'$r'" //??
    CONFIGURATION="${CONFIGURATION# } ${l}${r}"
done
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: 这句bash脚本是什么意思?

#2

帖子 bones7456 » 2009-05-22 21:52

r="${v#*=}" 是去变量v的=后面的部分.
l="${v%$r}" 是取v的第一个=前面的部分,包括=
test "$r" = "${r#* }" || r="'$r'" 是 如果有r的值包含空格,就给r加上单引号,否则不变.
关注我的blog: ε==3
wwangzhihang
帖子: 54
注册时间: 2006-06-23 7:43
联系:

Re: 这句bash脚本是什么意思?

#3

帖子 wwangzhihang » 2009-05-22 22:53

bones7456 写了:r="${v#*=}" 是去变量v的=后面的部分.
l="${v%$r}" 是取v的第一个=前面的部分,包括=
test "$r" = "${r#* }" || r="'$r'" 是 如果有r的值包含空格,就给r加上单引号,否则不变.
这些是什么符号?正则表达式?从哪里可以得到这方面的知识?谢谢
头像
hellojinjie
帖子: 1150
注册时间: 2007-09-14 21:03
来自: 浙江

Re: 这句bash脚本是什么意思?

#4

帖子 hellojinjie » 2009-05-23 18:16

我看晕过去了
Say hello to everyday!
头像
flymousedj
帖子: 313
注册时间: 2008-12-26 16:06

Re: 这句bash脚本是什么意思?

#5

帖子 flymousedj » 2009-05-23 18:24

我不懂,看上去和这个意思差不多~!@#$%^&*()_
THINKPAD R61i 7650-9SC
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30

Re: 这句bash脚本是什么意思?

#6

帖子 aerofox » 2009-05-24 0:19

代码: 全选

for v in "$@"; do
    r="${v#*=}"                       # r 的值为变量 v 的值去掉“=”以前(含)的部分,如果 $v 中不含 = 则 r 的值与 v 的值相同。(# 的作用)
    l="${v%$r}"                        # l 的值为变量 v 的值去掉 r 的值后的结果(即“=”左边的部分)。(% 的作用)
    test "$r" = "${r#* }" || r="'$r'"  # 如果 r 的值中不包含空格则 test 语句返回 0 (真),|| 后的部分不会执行。否则(即 r 的值中有空格),执行后面的部分
    CONFIGURATION="${CONFIGURATION# } ${l}${r}"
done
PS: shell 脚本中用 # 做注释,不要乱加 //。
回复