在 /home/scrript 下,我们有 187 个 bash 脚本,所有脚本都有以下行:
kill -PIPE $PID
我们要在所有脚本的这一行之前添加以下单词,如下所示
[[ $KILL_STATUS = YES ]] && kill -PIPE $PID
这样做的原因是避免编辑每个脚本,并使用 Linux 命令如 sed 一次性完成所有脚本,
答案1
$ for i in /home/scrript/*; do sed -i 's/kill -PIPE $PID/[[ $KILL_STATUS = YES ]] \&\& kill -PIPE $PID/' "$i"; done
解释
for i in /home/scrript/*; do FOO; done
:对 中的所有文件重复此操作/home/scrript
。注意,根据您的 shell 配置,这可能会跳过点文件。sed -i 's/kill -PIPE $PID/[[ $KILL_STATUS = YES ]] \&\& kill -PIPE $PID/' "$i"
:对于每个文件 ("$i"
),替换“就地”(sed -i
),替换kill -PIPE $PID
为[[ $KILL_STATUS = YES ]] \&\& kill -PIPE $PID
. (注意,您需要转义,&
因为否则它们有特殊含义。