分页: 1 / 1

这句bash脚本是什么意思?

发表于 : 2009-05-22 17:06
wwangzhihang

代码: 全选

for v in "$@"; do
    r="${v#*=}"  //??
    l="${v%$r}"  //??
    test "$r" = "${r#* }" || r="'$r'" //??
    CONFIGURATION="${CONFIGURATION# } ${l}${r}"
done

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

发表于 : 2009-05-22 21:52
bones7456
r="${v#*=}" 是去变量v的=后面的部分.
l="${v%$r}" 是取v的第一个=前面的部分,包括=
test "$r" = "${r#* }" || r="'$r'" 是 如果有r的值包含空格,就给r加上单引号,否则不变.

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

发表于 : 2009-05-22 22:53
wwangzhihang
bones7456 写了:r="${v#*=}" 是去变量v的=后面的部分.
l="${v%$r}" 是取v的第一个=前面的部分,包括=
test "$r" = "${r#* }" || r="'$r'" 是 如果有r的值包含空格,就给r加上单引号,否则不变.
这些是什么符号?正则表达式?从哪里可以得到这方面的知识?谢谢

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

发表于 : 2009-05-23 18:16
hellojinjie
我看晕过去了

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

发表于 : 2009-05-23 18:24
flymousedj
我不懂,看上去和这个意思差不多~!@#$%^&*()_

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

发表于 : 2009-05-24 0:19
aerofox

代码: 全选

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 脚本中用 # 做注释,不要乱加 //。