我正在尝试编写一个Linux Shell脚本来在我的服务器上进行一些自动化。顺便说一句,我正在使用Ubuntu 11.04。
基本上,流程如下:
一个。我在目录(/ home / mydir)中使用PHP创建多个文本文件。这些文本文件是shell脚本的存根,它们只包含变量定义。以下是其中一个文件中的内容示例。
username="myusername1"
password="mypassword1"
othersettings="othersettings1"
B中。我有一个引用上述变量的安装shell脚本。以下是脚本中可能包含的内容的一部分:
#!/bin/bash
mkdir /home/newdir/$username
我正在尝试编写一个激活shell脚本,该脚本将找出/ home / mydir中有多少这些文件,然后为目录中的每个文件执行setup shell脚本。因此,例如,如果我有5个不同用户名,密码等的5个文件,则使用每个文本文件中的变量运行5次安装脚本,以完成此脚本中定义的任务。
我很感激有关如何编写这样一个脚本的帮助。我的思维方式是我应该使用ls -1 /home/mydir | grep .txt
获取所有txt文件,然后将它们提取到数组,然后迭代并执行脚本,但我不是shell脚本专家所以我需要一些语法帮助。如果shell脚本是PHP,那对我来说不会有问题,但唉,事实并非如此。
提前致谢。
答案 0 :(得分:2)
在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
答案 1 :(得分:1)
这是shell脚本中.
或source
命令的用途;它将读取参数(文件)的内容并执行它们。请注意,人们强迫您的脚本使用您不打算使用的文件。请注意,C shell包含source
命令(仅支持Bourne shell .
); Bash提供了两者。
. /home/mydir/mystery_settings_file
mkdir /home/newdir/$username
请注意,如果你写:
. mystery_settings_file
shell将使用$ PATH搜索它,但该文件只能是可读的(它不需要是可执行的)。这非常有用。