我有一堆Bash脚本,他们各自使用以下内容:
BIN_CHATTR="/usr/bin/chattr"
BIN_CHKCONFIG="/sbin/chkconfig";
BIN_WGET="/usr/bin/wget";
BIN_TOUCH="/bin/touch";
BIN_TAR="/bin/tar";
BIN_CHMOD="/bin/chmod";
BIN_CHOWN="/bin/chown";
BIN_ECHO="/bin/echo";
BIN_GUNZIP="/usr/bin/gunzip";
BIN_PATCH="/usr/bin/patch";
BIN_FIND="/usr/bin/find";
BIN_RM="/bin/rm";
BIN_USERDEL="/usr/sbin/userdel";
BIN_GROUPDEL="/usr/sbin/groupdel";
BIN_MOUNT="/bin/mount";
有没有办法可以用这样的全局设置来创建一个Bash脚本,然后将它们包含在我想要运行的脚本中?
答案 0 :(得分:3)
是的,您可以将所有这些变量放在" settings.sh"等文件中。然后在你的脚本中执行此操作:
source settings.sh
答案 1 :(得分:2)
您可以将变量保存在shell脚本中,然后获取该文件:
source /path/to/variables.sh
你应该实际使用.
,它在bash中与源相同,但会提供更好的可移植性:
. /path/to/variables.sh
答案 2 :(得分:2)
你在寻找源命令吗?
mylib.sh:
#!/bin/bash
JAIL_ROOT=/www/httpd
is_root(){
[ $(id -u) -eq 0 ] && return $TRUE || return $FALSE
}
test.sh
#!/bin/bash
# Load the mylib.sh using source comamnd
source mylib.sh
echo "JAIL_ROOT is set to $JAIL_ROOT"
# Invoke the is_root() and show message to user
is_root && echo "You are logged in as root." || echo "You are not logged in as root."
btw - 使用rsync -a镜像带有+ x标志的脚本。
答案 3 :(得分:1)
是的,你可以。只需将变量和函数添加到文件中,使其可执行并在任何需要访问它们的脚本的顶部“执行”它。这是一个例子:
$ pwd
/Users/joe/shell
$ cat lib.sh
#!/bin/bash
BIN_WGET="/usr/bin/wget"
BIN_MOUNT="/bin/mount"
function test() {
echo "This is a test"
}
$ cat script.sh
#!/bin/bash
. /Users/joe/shell/lib.sh
echo "wget=$BIN_WGET"
test
$ ./script.sh
wget=/usr/bin/wget
This is a test