LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: xggabc

获得目录[已解决]

[复制链接]
发表于 2004-2-21 12:02:26 | 显示全部楼层
lonwind=xggabc目前同一人
发表于 2004-2-21 23:54:54 | 显示全部楼层
最初由 lonwind 发表
用SHELL编写安装脚本时
当用户输入rpm时和用自编译时
在脚本程序中用什么条件能区分这两种情况,使系统自动找到相关的目录
即if [?]
else [?]
?是什么条件,才能返回不同的目录
我不熟悉这个?是什么

大致意思:
if [ rpm ]
返回一个目录
else [ 自编译 ]
返回另一个目录

粗略描述一下,利用我楼上提及编一个简单脚本即可看到一个命令所在的目录。

  1. _command=$1
  2. if [ -n "$(rpm -qa | grep _command)" ]; then
  3.     rpm -ql _command
  4. else
  5.     whereis _command
  6. fi
复制代码

不过,对于编译方式的程序,并非这样简单地就能获取安装的所有路径。
要编写脚本分析Makefile才行。
 楼主| 发表于 2004-3-17 14:52:52 | 显示全部楼层
出现了新问题
就是同一个脚本程序
一样的代码
都是上述的查找目录
可是一个能成功
还有一个出现了
find : missing arguments to 'exec'或
find : path must precede expression
useage find [path] [expression
代码如下
find "$1" -type f -name "$2" -exec dirname {} \; 2>/dev/null
 楼主| 发表于 2004-3-17 15:25:21 | 显示全部楼层
问题解决了
是我在;后少了一个空格
请问着空格什么用
发表于 2004-3-17 16:23:27 | 显示全部楼层
-exec command {} \;
这里的分号表示一个exec执行命令的结束,如果;后没有空格那么find认为-exec所执行的命令并没有结束!
find中的;不同于命令行下cmd1;cmd2这样的分号
发表于 2004-3-17 22:32:29 | 显示全部楼层
dirname <ATH>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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