当前位置: 技术问答>linux和unix
十万火急,求救一个shell script问题
来源: 互联网 发布时间:2016-01-14
本文导语: 下面有一个shell 脚本中的一个函数,是把字符串第一位的“#”拿掉,并且字符串等于“0000”或“FFFF”就把字符串变成“----” #!/usr/bin/ksh ...... extractHash() { var=$input temp=`echo $var |cut -c1-1` if [[ "$temp" -eq ...
下面有一个shell 脚本中的一个函数,是把字符串第一位的“#”拿掉,并且字符串等于“0000”或“FFFF”就把字符串变成“----”
#!/usr/bin/ksh
......
extractHash()
{
var=$input
temp=`echo $var |cut -c1-1`
if [[ "$temp" -eq "#" ]] ; then
if [ "$var" = "#0000" ] || [ "$var" = "#FFFF" ]; then
input="----"
else
temp2=`echo $var |cut -c2-`
input=$temp2
fi
else
if [ "$var" = "0000" ]||[ "$var" = "FFFF" ] ; then
input="----"
else
input=$var
fi
fi
}
......
如果输入的字符串是 带“#”的就没有问题
比如: "#1234" 处理结果是 1234 (ok)
"#0000" 处理结果是 ---- (ok)
"#FFFF" 处理结果是 ---- (ok)
可是如果不带“#”的字符串处理就有问题了
比如: "1234" 处理结果是 1234 (这个正确的,ok)
"0000" 处理结果是 000 (有问题, false)
"FFFF" 处理结果显示 Bad number (有问题, false)
请高手帮我看看,为什么处理 0000 和 FFFF 时不对呢
#!/usr/bin/ksh
......
extractHash()
{
var=$input
temp=`echo $var |cut -c1-1`
if [[ "$temp" -eq "#" ]] ; then
if [ "$var" = "#0000" ] || [ "$var" = "#FFFF" ]; then
input="----"
else
temp2=`echo $var |cut -c2-`
input=$temp2
fi
else
if [ "$var" = "0000" ]||[ "$var" = "FFFF" ] ; then
input="----"
else
input=$var
fi
fi
}
......
如果输入的字符串是 带“#”的就没有问题
比如: "#1234" 处理结果是 1234 (ok)
"#0000" 处理结果是 ---- (ok)
"#FFFF" 处理结果是 ---- (ok)
可是如果不带“#”的字符串处理就有问题了
比如: "1234" 处理结果是 1234 (这个正确的,ok)
"0000" 处理结果是 000 (有问题, false)
"FFFF" 处理结果显示 Bad number (有问题, false)
请高手帮我看看,为什么处理 0000 和 FFFF 时不对呢
|
逻辑没问题,好像写错了,最后应该:
........
else
if [ "$var" = "0000" ]||[ "$var" = "FFFF" ] ; then
input="----"
fi
else
input=$var
fi
}
........
else
if [ "$var" = "0000" ]||[ "$var" = "FFFF" ] ; then
input="----"
fi
else
input=$var
fi
}
|
http://www.linuxsir.org/main/doc/abs/abs3.7cnhtm/string-manipulation.html
#!/bin/bash
var1='#0000'
var2=${var1##} #去掉'#'
echo $var2
var3=${var2/0000/----} #将0000换成----
echo $var3