GEN脚本求助
set num = `echo " scale = 0 ;( $num1 * 10 + $num2 ) " | bc` 中$LAYER4代表当前工作层,$num1是当x是两位时的十分位,$num2是个位,当x=10时,为什么变量layer和num的値老是1呀,x=11时就是对的,就是只要个位数是0,最终值就是错的,请赐教!
奇怪的脚本问题
set num = `echo " scale = 0 ;( $num1 * 10 + $num2 )/1 " | bc`
加上/1试下
内层编号格式为LX-SIG,其中X是层数,当X是任意自然数时,
set layertop = `echo $LAYER4 | cut -f1 -d'-' | cut -c 2-`
就能取得层序数;
cut用法要去了解透彻才好,unix命令和c shell也是很强大的
BTW:不要去计算,c shell经常省掉前面的0
BTW:不要去计算,c shell经常省掉前面的0,我现在情况是省掉后面的0,BTW是什么意思呀?
你那个表达式当层数是两位数时也能取得层数吗?
我试下吧,应是对的!
试过了,表达式没问题,但当层数是10的倍数时仍然是错的,比如层数是10层数时,上面两个变量的值都等于1,当层数等于20时以上两个变量的值都于2,不知为什么!总之只要个位是0就给省掉了
set layertop = ` echo $LAYER4 | cut -c2-3 `
set num = `echo " scale = 0 ;( $num1 * 10 + $num2 ) " | bc`
这两句有什么关联?看不出来啊,把代码发给我看下
不知道你想要达到什么目的
if ( $layer_num < 10 ) then
set layertop = ` echo $LAYER4 | cut -c2 `
set num = ` echo $LAYER4 | cut -c2 `
endif
if ( $layer_num >= 10 ) then
set num1 = ` echo $LAYER4 | cut -c2 `
set num2 = ` echo $LAYER4 | cut -c3 `
if ( $num2 != - ) then
set layertop = ` echo $LAYER4 | cut -c2-3 `
set num = `echo " scale = 0 ;( $num1 * 10 + $num2 ) " | bc`
else
set layertop = ` echo $LAYER4 | cut -c2 `
set num = ` echo $LAYER4 | cut -c2 `
endif
endif
这是你的源代码,其中
if ( $num2 != - ) then
错了,无法比较的
应为if ( $num2 != "- ") then
还是建议下面这种写法比较简洁:
set layertop = `echo $LAYER4 | cut -f1 -d'-' | cut -c 2-`