LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1548|回复: 10

问一个简单shell问题,for循环打开文件

[复制链接]
发表于 2006-8-16 14:54:25 | 显示全部楼层 |阅读模式
[PHP]for openfile in `cat ~/shelltools/xstartup.list`; do
    gedit ${openfile} ;
done[/PHP]

我的
xstartup.list是这样的:
[PHP]~/acm/pku1010.cpp
~/acm/pku1010.in[/PHP]

问题是,我得到的结果是
gedit /home/fluke/~/acm/pku1010.cpp

而我想要的结果是
gedit /home/fluke/acm/pku1010.cpp

为什么$openfile里面的 "~" 不被正常解释成为 我的home?
发表于 2006-8-16 15:08:21 | 显示全部楼层
不应该呀,你看看$openfile获取到的文件名是什么?
回复 支持 反对

使用道具 举报

发表于 2006-8-16 15:08:54 | 显示全部楼层
$ for file in `cat t_file` ; do echo $file ;done
~/sina/com
~/1/3

$ cat t_file
~/sina/com
~/1/3

看gedit了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-16 16:46:23 | 显示全部楼层
echo 之后看到的是正确的,不然你试试gedit看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-16 16:49:14 | 显示全部楼层
#!/bin/sh
# file: ~/shelltools/xstartup
# function: starts applications when startx

# Items below for gedit startup
gedit &
gedit ~/clipboard.txt &
gedit ~/.fluxbox/startup &
gedit ~/shelltools/xstartup

for openfile in `cat ~/shelltools/xstartup.list`; do
    gedit ${openfile} ;
done

上面是完整的shell文件,我发现,打开for上面的文件都是正确的,下面的都是这样的形式:

pwd + path

比如,我在 /mnt运行那个shell文件

gedit打开的就是

/mnt/~/acm/pku1010.cpp

说明,gedit在路径处理上有问题,不知道怎么解决。郁闷
回复 支持 反对

使用道具 举报

发表于 2006-8-16 17:44:52 | 显示全部楼层
这个~的扩展是shell做得,就像*一样

不是gedit的错

ps:又一个搞acm的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-16 17:52:11 | 显示全部楼层
那么有没有办法实现我想要的呢?

ps:有同好在论坛上?
回复 支持 反对

使用道具 举报

发表于 2006-8-16 18:33:41 | 显示全部楼层
[php]
eval gedit "$openfile"
[/php]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-16 20:55:21 | 显示全部楼层
感谢,我之前再测试 gedit eval $openfile

因为我之前在用php的时候,知道有eval这种函数,呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-8-16 22:00:47 | 显示全部楼层

谁知道从shell创建gtk dialog的那个软件?

类似kdialog的,我找了一个钟头了,郁闷阿~~

忘记名字了,该死
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表