在shell中我希望做到以下几点:
对于在/ etc / test /文件夹中找到的每个文件,取出内容并将其添加到以下内容中:
/root/.ssh/authorized_keys
我们的想法是在此文件夹中包含文件,每个文件都有一个密钥,并且对于找到的每个文件,该密钥都会添加到authorized_keys中。
我是shell的新手,但这是我得到了多远:
#!/bin/bash
FILES=/etc/test/*
for f in $FILES
do
echo "Adding $f key"
cat $f >> /root/.ssh/authorized_keys
done
然而,当我运行它时它似乎无法工作。任何人都可以告诉我为什么它可能无法正常工作吗?
答案 0 :(得分:0)
尝试使用find
进行递归文件搜索,并使用cat
将其输出作为命令行参数传递给xargs
find /etc/test/ -type f -print0 | xargs -0 cat >> /root/.ssh/authorized_keys
答案 1 :(得分:0)
将作业引用到FILES
变量。编写方式如果/etc/test
中没有文件,则会为FILES
分配文字字符串/etc/test/*
。如果只有一个文件,那么您的脚本将正常工作。如果有多个,该行将展开为FILES=/etc/test/file1 /etc/test/file2 ...
,暂时将/etc/test/file1
分配给FILES
,然后尝试以其余文件作为参数运行/etc/test/file2
,这可能会失败。