我想编写一个脚本这将提示用户输入两个数字,代表一长方形的宽度和高度,以厘米为单位,输出两个平方厘米平方英寸的矩形的面积。 在UNIX(一英寸= 2.55厘米)。
我认为它是这样的:
echo "Please enter the width:"
read width
echo "Please enter the second height"
read height
ANS=`expr width \* height`
echo "$ANS"
任何帮助将非常感激
我想编写一个脚本这将提示用户输入两个数字,代表一长方形的宽度和高度,以厘米为单位,输出两个平方厘米平方英寸的矩形的面积。 在UNIX(一英寸= 2.55厘米)。
我认为它是这样的:
echo "Please enter the width:"
read width
echo "Please enter the second height"
read height
ANS=`expr width \* height`
echo "$ANS"
任何帮助将非常感激
短的:)
#!/bin/bash
read -p "Width in cm (default 1)? " w
read -p "Height in cm (default 1)? " h
read acm ain <<<$(dc<<<"5k${w:-1}sa${h:-1}sb2.54silalb*sclcli/li/sdlcps.ldps.q")
echo "width: ${w:-1}(cm), height: ${h:-1}(cm) - Area: $acm (sqcm) $ain (sqin)"
编辑 :补充说明
该dc
是RPN计算器,做下一个
在“正常”数学:
a=$w; b=$h; i=2.54; c=a*b; d=c/i/i ; print c; print d
和剧本,
<<<
是在单线“定界符” - dc
将读取它作为从stdin其输入 $(commnad)
是指:更换$(命令)用命令的结果 read xy <<<
平均读两个值入变量x和y(在dc
返回2个值) 这取决于你使用的shell。 KSH有浮点算术支持,其他炮弹没有。 在ksh
,你可以这样做:
#!/bin/ksh
typeset -f width height sq_cm sq_in
printf "Please enter the width in cm: "; read width
printf "Please enter the height in cm: "; read height
((sq_cm = width * height))
((sq_in = sq_cm / 2.54 / 2.54))
echo "Results:"
printf "%.2f sq cm\n" "${sq_cm}"
printf "%.2f sq in\n" "${sq_in}"
举例来看:
$ ./ksh.sh
Please enter the width in cm: 2.5
Please enter the height in cm: 2.5
Results:
6.25 sq cm
0.97 sq in
如果你正在使用如bash的 ,一种方式是-像史蒂芬指出-使用AWK 。 另一种选择是bc
。 如果你使用bash的 , read
可以打印提示的照顾你,让你可以摆脱多余的echo
:
#!/bin/bash
read -p "Please enter the width in cm: " width
read -p "Please enter the height in cm: " height
sq_cm="$(echo "scale=3; ${width} * ${height}" | bc)"
sq_in="$(echo "scale=3; ${sq_cm} / 2.54 / 2.54" | bc)"
echo "Results:"
printf "%.2f sq cm\n" "${sq_cm}"
printf "%.2f sq in\n" "${sq_in}"
举例来看:
$ ./bash.sh
Please enter the width in cm: 2.5
Please enter the height in cm: 2.5
Results:
6.25 sq cm
0.97 sq in
#!awk -f
BEGIN {
if (ARGC != 3) {
print "calc.awk WIDTH HEIGHT"
print "input must be in CM"
exit
}
printf "%s\n%.2f\n%s\n%.2f\n",
"area square cm",
ARGV[1] * ARGV[2],
"area square in",
ARGV[1] * ARGV[2] / 2.54^2
}
谢谢格雷格