我想写一个Linux Shell脚本在我的服务器上做一些自动化。顺便说一下,我用的是Ubuntu 11.04。
基本上,过程如下:
。我使用PHP在目录(/home/mydir)中创建了多个文本文件。这些文本文件是shell脚本的存根,它们只包含变量定义。以下是其中一个文件中可能包含的内容的示例。
username="myusername1"
password="mypassword1"
othersettings="othersettings1"
B。我有一个引用上述变量的设置shell脚本。下面是脚本中可能出现的部分内容:
#!/bin/bash
mkdir /home/newdir/$username
我正试图编写一个激活shell脚本,该脚本将找出在/home/mydir中有多少这些文件,然后为目录中的每个文件执行设置shell脚本。因此,例如,如果我有5个文件,有5个不同的用户名,密码等,那么设置脚本将使用每个文本文件中的变量运行5次,以完成该脚本中定义的任务。
我希望你能帮助我写这样一个脚本。我的想法是工作的方式是,我应该使用也许ls -1 /home/mydir | grep .txt
得到所有的txt文件,然后提取到一个数组,然后迭代和执行脚本,但我不是一个shell脚本专家,所以我需要一些帮助与语法。如果shell脚本是PHP,这对我来说就不是问题了,但是,唉,它不是。
在shell中这样做:
for f in /home/mydir/*.txt; do
. "$f" # source settings file
mkdir "/home/newdir/$username"
done
但是正如我在评论中提到的,你可以用PHP写你的脚本。
#!/usr/bin/php
<?php
...
?>
编辑
你的代码工作,我只是编辑它调用shell脚本中的shell脚本,这是我真正想做的。所以下面的代码也可以工作。
#!/bin/bash
for f in /home/dir/*.txt
do
. "$f"
. /path/to/setup-shell-script #referenced in B of the original question
done
这是.
或source
命令在shell脚本中的作用;它将读取参数(文件)的内容并执行它们。谨防有人强迫您的脚本使用您不希望他们使用的文件。注意,C shell包含source
命令(Bourne shell只支持.
);Bash都提供了。
. /home/mydir/mystery_settings_file
mkdir /home/newdir/$username
注意如果你写:
. mystery_settings_file
shell将使用$PATH搜索它,但是该文件必须是可读的(它不需要是可执行的)。