【发布时间】:2015-07-01 18:25:31
【问题描述】:
如何删除 shell 脚本文件(比如 file.sh)中的特定 if 语句,并使用 for 循环对单个文件夹内所有文件夹的所有文件(file.sh)执行相同操作找到文件?
详细解释:
我有一个文件夹 A。它里面有各种文件夹,假设 B、C、D、E... 等等。 B、C、D、E...等的所有/部分文件夹有两个文件,file1.sh 和file2.sh。 这两个文件,file1.sh 和 file2.sh 有一个 if 语句。
if [ $usertype != "adm" ]
then
echo "deploy can only be run with dtp?adm account."
exit 1
fi
我想编写一个脚本,它将文件夹 A 作为参数,检查其每个子文件夹 B、C、D、E 等中的文件 file1.sh 和 file2.sh。如果找到这些文件, 它将检查上面的 if 语句,如果它存在,它应该将这个完整的 if 语句从if 删除到fi,保存文件并退出。
【问题讨论】:
-
请注意,
if语句不是循环。假设一个文件夹只有file1.sh而没有file2.sh但它包含if语句;文件应该被编辑吗?假设一个文件夹有file3.sh包含if语句;文件应该被编辑吗?我注意到if语句在变量周围没有引号,最好有它们,并且在不需要它们的文字周围有引号(但我可能会将它们放/保留在那里以保持对称/明晰)。不过,既然他们要去,那就不是什么大问题了。您需要查看sed,并检查-i.bak选项。 -
Jonathan Leffler,您的疑问是 --> 假设一个文件夹只有 file1.sh 而没有 file2.sh 但它包含 if 语句;文件应该被编辑吗?假设一个文件夹有包含 if 语句的 file3.sh;文件应该被编辑吗? 这个问题的答案是肯定的,但是if语句应该和上面的条件完全一样,我的意思是条件
$usertype != "adm"