我已经输入了这个shell脚本,并在编译时显示错误
echo Enter basic Salary
read bs
if [ $bs -lt 1500 ]
then
hra= echo ´$bs \* 10 / 100´|bc
fi
gs= echo ´$bs + $hra´|bc
echo $gs
错误是:
(standard_in) 1: illegal character: \302
(standard_in) 1: illegal character: \264
(standard_in) 1: illegal character: \302
(standard_in) 1: illegal character: \264
(standard_in) 1: illegal character: \302
(standard_in) 1: illegal character: \264
(standard_in) 1: illegal character: \302
(standard_in) 1: illegal character: \264
(standard_in) 2: syntax error
答案 0 :(得分:1)
使用´
代替'
或"
,有一个问题(或者更确切地说,有4个问题)。
除非急性重音以UTF-8或UTF-16编码†
,否则还有另一个字符也会造成麻烦另一个问题是在作业周围使用空格;这些不会在壳中飞行。作业的任何一方都不得有空格。
echo Enter basic Salary
read bs
if [ "$bs" -lt 1500 ]
then hra=$(echo "$bs * 10 / 100"|bc)
fi
gs=$(echo "$bs + $hra"|bc)
echo $gs
你真的不需要变量gs
;你可以写:
echo "$bs + $hra" | bc
请注意,如果bs
不小于1500,则会为hra
获取一个定义不明确的值(无论发生什么事情,或者如果未设置,则为空白。)
†看起来你有UTF-8编码数据。
$ echo "´" | odx
0x0000: C2 B4 0A ...
0x0003:
$ echo "´" | utf8-unicode
0xC2 0xB4 = U+00B4
0x0A = U+000A
$ bc | cat
ibase=16
obase=8
C2
302
B4
264
quit
$
U + 00B4是Unicode中的ACUTE ACCENT。
答案 1 :(得分:0)
错误太多:
例如
HRA = echo $bs \* 10 / 100|bc
此外,如果输入超过1500,则会发出错误。所以你需要用它做点什么。
例如
echo“输入基本工资”
读bs
如果[$ bs -lt 1500]
然后
HRA = echo $bs \* 10 / 100|bc
其他
HRA = echo $bs \* 5 / 100|bc
科幻
GS = echo $bs + $hra|bc
echo $ gs