分页: 1 / 1
看不懂这句
发表于 : 2009-10-14 16:49
由 zhz.ubuntu
ROOT_DIR=/opt/enomalism2
if [ -f $ROOT_DIR/scripts/func.sh ]; then
. $ROOT_DIR/scripts/func.sh
else
echo "Could not find functions file, please check that func.sh file exists in the same directory"
exit 1
fi
蓝色的那句。
Re: 看不懂这句
发表于 : 2009-10-14 16:51
由 hubert_star
. 的作用与 source 一样
就是导入sh里面的变量到当前环境,并执行内部的一些代码
你可以认为这是#include
Re: 看不懂这句
发表于 : 2009-10-14 16:59
由 zhz.ubuntu
谢谢。
func.sh 中全部是函数,是不是把函数导入,在后面可以直接调用?
hubert_star 写了:. 的作用与 source 一样
就是导入sh里面的变量到当前环境,并执行内部的一些代码
你可以认为这是#include
Re: 看不懂这句
发表于 : 2009-10-14 17:05
由 hubert_star
明确的答案:是,包括在脚本里面定义的:变量、方法和执行过程,变量和方法你直接可以用,执行的代码在你包含时被调用
Re: 看不懂这句
发表于 : 2009-10-14 17:18
由 zhz.ubuntu
非常感谢hubert_star的回答。这之后其实还有一个问题:
执行蓝色(也就是. $ROOT_DIR/scripts/func.sh)这句后出错,提示bad substitution。是func.sh中有一个函数出错了。函数如下:
__pids_var_run() {
local base=${1##*/}
local pid_file=${2:-/var/run/$base.pid}
pid=
if [ -f "$pid_file" ] ; then
local line p
read line < "$pid_file"
for p in $line ; do
[ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
done
if [ -n "$pid" ]; then
return 0
fi
return 1 # "Program is dead and /var/run pid file exists"
fi
return 3 # "Program is not running"
}
如果能说明哪里错了就更好了。(不好意思,本来有缩进的,发表就没有了)
Re: 看不懂这句
发表于 : 2009-10-14 19:52
由 cnkilior
看不出。。
试着用sh -x you_script
就知道了
Re: 看不懂这句
发表于 : 2009-10-14 23:07
由 hubert_star
把你的#!/bin/sh改成#!/bin/bash或者#!/usr/bin/bash,反正就是不用ubuntu阉割的那个dash,再试试
Re: 看不懂这句
发表于 : 2009-10-15 9:51
由 zhz.ubuntu
太太太感谢了!!!!ubuntu还真麻烦。这是我安装的一个软件的脚本。之前就是bad substitution的错误。按照下面改就可以了。我对ubuntu无语了。
hubert_star 写了:把你的#!/bin/sh改成#!/bin/bash或者#!/usr/bin/bash,反正就是不用ubuntu阉割的那个dash,再试试