分页: 1 / 1

开始学shell脚本,大家帮忙。

发表于 : 2010-11-20 3:14
robinylp
我在shell下进行赋值操作($ a = 0),但是不行,用set命令($ set a = 0),但是显示的时候什么都没有($ echo $a)。这是什么问题啊?
我看见有些人直接打 $ a = 0 就可以赋值了,是不是版本的问题还是需要安装什么软件啊?

先谢谢大家!

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-20 3:58
ebok
$a=0不是赋值

代码: 全选

a=0
echo $a
学shell一定要看ABS。

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-20 4:08
robinylp
对啊 就是 a = 0
在ubuntu下面不行的,一定要用 set a = 0
但是 赋值完以后 echo $a 什么都没有显示出来 只是空白的

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-20 8:10
trigger
给你个脚本样例,看看就明白了。

代码: 全选

#!/bin/bash
max=50	#变量max赋值
for i in `tr -s ' ' '\n'<lines3|sort -n`	#注意,当你给变量i赋值的时候是没有$符号的
do
  let max=max-i
  (($max<0))&&break	#当你需要调用一个变量的时候,需要用$告诉脚本“这不是字符串”!
  echo $i	#同上
done

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-20 15:54
ebok
赋值“=”左右不要有空格,很低级的错误。

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-21 0:12
robinylp
我举个最简单的例子
#!/bin/dash
#test
set a = "hallo word"
echo $a

我在shell下打./test.sh
什么都没有显示出来。这是为什么?只是空白一行。

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-21 0:48
ebok
:em20
set不是用来赋值,用来修改内部脚本变量的值如$1,$2之类
set a = "hallo word" 把 a = "hallo word" 整个字符串赋给$1
如果用了set a = "hallo word" ,再

代码: 全选

echo $1
输出就会是a = "hallo word"
建议还是认真地看一遍ABS《Advanced Bash Shell Scripting Guild》中文名《高级BASH脚本编程指南》

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-21 6:41
robinylp
谢谢大家!
以后还有问题,还是要请教啊!

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-23 22:08
tusooa
等号两边不能有空格。赋值的时候,变量名前面不要有$,举个例子:

代码: 全选

foo=bar
$foo=test
echo "$foo"
echo "${!foo}"
输出是bar和test。

建议写命令的时候前面不要带$。复制麻烦的。
同时建议下:
http://tusooa.heroku.com/shell/2010/11/ ... mands.html

Re: 开始学shell脚本,大家帮忙。

发表于 : 2010-11-24 16:41
wu4laohu
ebok 写了:$a=0不是赋值

代码: 全选

a=0
echo $a
学shell一定要看ABS。
刚下载 一定要看!