里面是我写的简单脚本,我错在哪里?谢谢!

sh/bash/dash/ksh/zsh等Shell脚本
回复
nigo
帖子: 104
注册时间: 2010-01-23 23:24
送出感谢: 0
接收感谢: 0

里面是我写的简单脚本,我错在哪里?谢谢!

#1

帖子 nigo » 2011-05-11 15:49

是想实现下面的功能:
让用户做一个选择,比如让用户选择向东走还是向西走,然后根据用户的选择给一个变量赋值;
再让用户做一个选择,比如让用户选择向南还是向北,然后根据用户的选择给另一个变量赋值;
最后把这两个变量的值相加。
下面是我写的一个简单的脚本,只是测试这个功能用,可是最终的结果却是sum永远是0。
而且echo "the value of var2 is $var2" 这断代码的输出是 the value of var2 is
可是我明明给var2赋值了呀。请教大家了,谢谢!下面是我的代码:

代码: 全选

#!/bin/bash
echo "请选择1;2;3中的一个"
read var1
case $var1 in
1 ) var2=4 echo "the value of var2 is $var2"  ;;
2 ) var2=10 echo "the value of var2 is $var2"  ;; 
3 ) var2=200 echo "the value of var2 is $var2" ;;
esac
echo "请选择1,2"
read var3
case $var3 in
1 ) var4=1 echo "var4 is $var4" ;;
2 ) var4=2 echo "var4 is $var4" ;;
esac 
sum=$((var2+var4))
echo "var2和var4的和是$sum"
头像
Yume
帖子: 1015
注册时间: 2010-05-24 12:16
送出感谢: 0
接收感谢: 0

Re: 里面是我写的简单脚本,我错在哪里?谢谢!

#2

帖子 Yume » 2011-05-11 16:01

没有设定变量赋值吧?
上次由 Yume 在 2011-05-11 16:22,总共编辑 1 次。
jonef
帖子: 12
注册时间: 2007-01-02 4:09
送出感谢: 0
接收感谢: 0

Re: 里面是我写的简单脚本,我错在哪里?谢谢!

#3

帖子 jonef » 2011-05-11 16:05

除了第一个和最后一个echo, 所有的echo前面应该有个分号,hehe

echo -> ; echo
nigo
帖子: 104
注册时间: 2010-01-23 23:24
送出感谢: 0
接收感谢: 0

Re: 里面是我写的简单脚本,我错在哪里?谢谢!

#4

帖子 nigo » 2011-05-11 16:06

代码: 全选

case $var1 in
1 ) var2=4 echo "the value of var2 is $var2"  ;;
这里 var2=4已经赋值了呀,可是执行脚本的时候,就变成var2是空的了。不知道怎么回事 :em20
fnan
帖子: 919
注册时间: 2009-07-01 22:04
送出感谢: 0
接收感谢: 13 次

Re: 里面是我写的简单脚本,我错在哪里?谢谢!

#5

帖子 fnan » 2011-05-11 16:07

赋值语句与echo语句在同一行中间要分号。
bash不如perl精妙,学不到lisp的皮毛,远不够c++强悍,不过可以用。
nigo
帖子: 104
注册时间: 2010-01-23 23:24
送出感谢: 0
接收感谢: 0

Re: 里面是我写的简单脚本,我错在哪里?谢谢!

#6

帖子 nigo » 2011-05-11 16:17

原来是这样呀,谢谢啦!
tusooa
帖子: 6546
注册时间: 2008-10-31 22:12
系统: 践兔
送出感谢: 6 次
接收感谢: 10 次
联系:

Re: 里面是我写的简单脚本,我错在哪里?谢谢!

#7

帖子 tusooa » 2011-06-24 13:29

代码: 全选

var2=4 echo
这是传递环境变量,echo执行完之后那$var2就没了.
varN=xxx 之后要有分号

代码: 全选

] ls -ld //
joseneo
帖子: 7
注册时间: 2011-06-28 10:57
送出感谢: 0
接收感谢: 0

Re: 里面是我写的简单脚本,我错在哪里?谢谢!

#8

帖子 joseneo » 2011-06-28 16:35

楼主,我改了一下你的脚本,你看看,在我这边能运行的,也能出来结果

代码: 全选

#!/bin/bash

echo "pls chosen one from 1,2,3"
read var1
case $var1 in
	1)
		var2=6
		echo "the value of var2 is $var2"
		;;
	2)
		var2=13
		echo "the value of var2 is $var2"
		;;
	3)
		var2=16
		echo "the value of var2 is $var2"
		;;
esac

echo "pls chosen one from 1,2"
read var3
case $var3 in
	1)
		var4=3
		echo "var4 is $var4"
		;;
	2)
		var4=6
		echo "var4 is $var4"
		;;
esac

[ -n "$var2" ]
[ -n "$var4" ]

sum=`expr $var2 + $var4`
echo "the sum of var2 and var4 is $sum"
回复

回到 “Shell脚本”