我需要以下ksh
脚本的帮助:
ExpResult=`echo "$LoadString" | awk -F"-" '{print NF}'=2`
MinExp=`echo "$ExpResult" | tr -s " " | sed 's/^[ ]//g'| cut -d"-" -f1`
MaxExp=`echo "$ExpResult" | tr -s " " | sed 's/^[ ]//g'| cut -d"-" -f2`
我可以输入两个选项:“50-100”或“50”(例如)
我有两个问题:
答案 0 :(得分:1)
您可以使用内部case
语句验证输入和参数扩展功能以转换输入,而不是调用外部程序来解析输入,即
# set a copy/paste value for $1
set -- 50-10
case "$1" in
*-* )
range="$1"
min="${range%-*}"
max="${range#*-}"
;;
* )
singleNum="$1"
;;
esac
echo min=$min ... max=$max
<强>输出强>
min=50 ... max=100
尝试非配对
unset min max
set -- other values
case ...
echo min= ... max= ... singleNum=$singleNum
<强>输出强>
min= ... max= ... singleNum=other
希望案例处理不言自明,但参数扩展可能需要一些解释。
声明
min=${range%-*}
表示从扩展值(50-100)的右侧删除从最后-
开始直到字符串结尾的任何内容。这会留下值50
。
与
相反max=${range#*-}
表示从扩展值的左侧删除任何内容,直到第一个-
字符。这留下了100
。
由于此字符串中只有一个-
字符,因此您不必担心${var##*-}
的其他版本,它们会从左侧删除所有字符,直到最后一个匹配-
和反向${var%%-*}
,从右(向后)移除所有内容,直到第一个-
字符。
狂热的极简主义者会提醒我们,这可以在没有临时变量的情况下完成,即
min=${1%-*} ; max=${1#*-}
单行幻想家可以满意
case "$1" in *-* ) range="$1";min="${range%-*}";max="${range#*-}";;* ) singleNum="$1";;esac; echo min=$min ... max=$max .,, singleNum=$singleNum
: - )
IHTH
答案 1 :(得分:0)
你可以试试这个;
<div class="row">
<div class="col-xs-12">
<a href="#" class="btn btn-default">test loooooooooooooooooooongstring<a>
<br /><br />
<button class="btn btn-default">test loooooooooooooooooooongstring</button>
</div>
</div>
例如:
LoadString=$1
MinExp=`echo "$LoadString" | awk -F"-" '{if (NF==2) print $1}`
MaxExp=`echo "$LoadString" | awk -F"-" '{if (NF==2) print $2}`
echo $MinExp
echo $MaxExp