请问Solaris脚本的赋值有关问题
发布时间:2011-06-27 19:16:48 文章来源:www.iduyao.cn 采编人员:星星草
请教Solaris脚本的赋值问题
我的脚本如下:
#!/bin/sh
TAG=no
if [ -f /tmp/tmp.ini ];then
while read OPTNAME EQSIGN OPTVALUE
do
if [ $OPTNAME = 'TAG' ]; then
TAG=$OPTVALUE
echo $TAG
break
fi
done < /tmp/tmp.ini
fi
echo $TAG
我的文件tmp.ini里面内容如下:
TAG = yes
脚本运行的结果是
yes
no
也就是说,在循环体里面TAG的值已经被赋为yes了, 但是这个值并没有被保存,离开循环体之后,TAG的值还是初始化的no
这是什么原因呢?
顺便说一下,如果仅仅是while结构,这个值是可以被保存下来的,也就是说增加了读取文件的操作,产生了这样的问题,请教高人!
谢谢!
------解决方案--------------------
奇怪,我在ubuntu上执行时两个yes,难道solaris有差异?
------解决方案--------------------
换个shell试试
#!/bin/ksh
------解决方案--------------------
这个好像是Solaris上的Sh的一个特性,当While/until/loop有输入输出重定向的时候,它会新开一个子Shell来执行而且里面定义或者改变变量对父进程无效.
用man sh看一下说明就会发现有这么个Note:
If the input or the output of a while or until loop is
redirected, the commands in the loop are run in a sub-shell,
and variables set or changed there have no effect on the
parent process:
lastline=
while read line
do
SunOS 5.10 Last change: 2 May 2008 26
User Commands sh(1)
lastline=$line
done < /etc/passwd
echo "lastline=$lastline" # lastline is empty!
楼主还是换个写法或者用其它Shell吧。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
solaris 10下的多线程和solaris 5.8下多线程编译有什么区别??
我一个在solaris 10下编译通过且能正常运行的程序,为什么在solaris 5....
-
提示 read-only file system
从网上下载了一个vmware 镜相文件,用root 登陆,但用vi, mkdir 总是提示 read-only file system
这...
-
ftp的20、21端口
如果一台机器1可以ftp到另一台机器2,则需要开通机器1到机器2的20和21端口,我在机器1上用“telnet 机器1的IP 21”...
-
Solaris10如何重启inetd服务
问题描述:SunOS(Solaris 10) Unix系统下有一个具有sudo权限的非root用户修改了/etc/services文件,请问...
-
求solaris下的类似linux的top命令,谢谢!
rt
------解决方案--------------------
你可以使用prstat或者去下载包含top命令的软件包...
-
(急!)如何在UNIX中配置Microsoft SQL Server 2000 Driver for JDBC?
UNIX环境中已设置环境变量(在.bash_profile中设置,执行:echo $CLA...
-
Solaris 压缩问题
Solaris 我打了一个tar包,它的大小有6.5G,然后我用zip去压缩的时候发现不能成功,好像zip不能压缩超过2G的文件,请问...
-
急急急unix下的Xterm指的是什么?
急急急unix下的Xterm指的是什么?在哪里可以找到这个东东?原话是这样的:“do same as above with: an...
-
solaris下面,如何看支持mount哪些类型的文件系统
mount命令本身有这样的功能么?
------解决方案--------------------
没有 一...
-
请教各位高手,有没有命令是用来查看文件格式的 unix dos
查看某个文件是unix格式还是dos格式,能用vi命令来看,但是好像不能用程序来...