问题1:双击桌面上的sh脚本程序,弹出的窗口中,"在终端运行"和"运行"除了前者一闪而过,后者在后台执行这个脚本的表面上的区别外,还有什么本质上的区别?
问题2:要想在桌面上双击(选择"在终端运行"和"运行"皆可)执行一个脚本,不能将路径用变量来代替,但对于路径特别长或者多处使用一个相同的一个长路径想用变量来代替,怎么办?
情况一,start.sh这样写:
[code=Shell Script]
#!/bin/sh
top="/opt/install/Tomcat6.0.18"
suffix=$(date +%y%m%d_%H%M%S)
nohup sh ${top}/bin/startup.sh >> ${top}/std_log/Server_Name.out@${suffix} &
[/code]
将它放在桌面上,双击(选择"在终端运行"和"运行"皆可)执行是失败的!会在指定的位置写文件Server_Name.out@20090529,但是长度为0,也没有java那个进程,也就是启动失败!
情况二,start.sh这样写:
[code=Shell Script]
#!/bin/sh
suffix=$(date +%y%m%d_%H%M%S)
nohup sh /opt/install/Tomcat6.0.18/bin/startup.sh >> /opt/install/Tomcat6.0.18/std_log/Server_Name.out@${suffix} &
[/code]
这样就可以了,由此可见双击(选择"在终端运行"和"运行"皆可)执行实际上就是打开一个新的Shell执行该脚本,路径这些变量都没法儿在新窗口生效,所以读取变量时失败,有时会创建一个长度为0的文件,有时候干脆什么也没有,期望高手指点一下。
问题3:我写了2个简单的脚本,aa.sh和bb.sh
aa.sh(/root/DeskTop)内容如下:
#!/bin/sh
nohup sh /opt/bb.sh >> ccc.txt &
bb.sh(/opt下)内容如下:
#!/bin/sh
tdy218="Tian Dongyun"
echo "${tdy218}"
产生的ccc.txt竟然不生成在桌面,而是/root目录下!这是怎么回事儿?