LinuxSir.cn,穿越时空的Linuxsir!

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

如何写跨平台的shell脚本

[复制链接]
发表于 2009-7-7 06:27:17 | 显示全部楼层 |阅读模式
比如一个bash或者tcsh脚本,如何能够在winodws下和linux下都执行而不需要改动。这个问题的前提是,windows和linux下有相同的可执行程序,都已经设置在路径中了,比如cp,mkdir,wget等命令都已经默认在路径中了,可以直接调用。现在出现的问题是参数的路径问题,比如说在windows下,我的数据都是放在d盘,在linux对应的是/data分区,需要执行如下命令

windows下
cp d:/tmp/aa.txt     d:/aaa/

linux 下对应的命令是
cp /data/tmp/aa.txt  /data/aaa/

不想分别写两份脚本,这样很累,有什么好的解决办法。
发表于 2009-7-7 09:28:04 | 显示全部楼层
可以利用环境变量不同,或者uname命令结果,判断然后设置路径变量,如:
  1. if [ "$(uname)" = "Linux" ]; then
  2.         datapath="/data"
  3. else
  4.         datapath="d:"
  5. fi
  6. cp "$datapath/tmp/aa.txt" "$datapath/aaa/"
复制代码


提供个思路,具体自己变通,没在windows弄过shell脚本
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-7 12:43:16 | 显示全部楼层
谢谢,看来只能依靠环境变量了,在.bashrc中设置 datapath变量,所有的路径都引用这个变量。
回复 支持 反对

使用道具 举报

发表于 2009-7-7 16:03:13 | 显示全部楼层
windows下的路径不是反斜杠“\”么?
回复 支持 反对

使用道具 举报

发表于 2009-7-7 20:25:21 | 显示全部楼层
Windows有bash吗?用Cygwin吗?
Windows有cp吗?叫copy吧

如果真想跨平台,选择动态语言才是正解,比如Perl\Python之类
回复 支持 反对

使用道具 举报

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

本版积分规则

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