编写一个 Bash shell 脚本程序,创建 3 个目录,,dir1
然后将以下文件放入每个目录,。 大小为零,内容为当前日期/时间。创建一个名为的文件,该文件仅放入包含主机名的文件中的行的目录中。使用循环创建目录和文件。您将需要使用 if 条件块来通过命令和进行创建。dir2
dir3
file1
file2
file1
file2
file3
dir3
/etc/hosts
file3
grep
hostname
答案1
不需要任何循环。事实上,这只会造成混乱和低效。
mkdir dir{1..3}
touch dir{1..3}/file1
date | tee dir{1..3}/file2 >/dev/null
grep "$(hostname)" /etc/hosts >dir3/file3
这个答案唯一稍微高级的事情是使用tee
.该tee
实用程序将获取标准输入上的数据并将其复制到多个文件,然后再次复制到标准输出。我在这里使用它来将实用程序中的日期写入date
三个file2
文件中。重定向到/dev/null
末尾,这样我们就不会得到终端中显示的日期。
在上面的代码中,dir{1..3}
将被扩展为dir1 dir2 dir3
并且dir{1..3}/file1
将被扩展为dir1/file1 dir2/file1 dir3/file1
在以它作为参数调用实用程序之前。
答案2
这会做:
for i in {1..3}; do
mkdir dir$i
touch dir$i/file1
date > dir$i/file2
if [ $i -eq 3 ]; then
grep $(hostname) /etc/hosts > dir$i/file3
fi
done