这句bash脚本是什么意思?
发表于 : 2009-05-22 17:06
代码: 全选
for v in "$@"; do
r="${v#*=}" //??
l="${v%$r}" //??
test "$r" = "${r#* }" || r="'$r'" //??
CONFIGURATION="${CONFIGURATION# } ${l}${r}"
done
代码: 全选
for v in "$@"; do
r="${v#*=}" //??
l="${v%$r}" //??
test "$r" = "${r#* }" || r="'$r'" //??
CONFIGURATION="${CONFIGURATION# } ${l}${r}"
done
这些是什么符号?正则表达式?从哪里可以得到这方面的知识?谢谢bones7456 写了:r="${v#*=}" 是去变量v的=后面的部分.
l="${v%$r}" 是取v的第一个=前面的部分,包括=
test "$r" = "${r#* }" || r="'$r'" 是 如果有r的值包含空格,就给r加上单引号,否则不变.
代码: 全选
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