linux - Bash 脚本搜索和替换

标签 linux bash shell sed

我有一个不能正常工作的 bash 脚本,我是这种编码的新手。任何建议或帮助都会很棒。

我正尝试在我们的 PuTTy 平台上用新用户更改旧用户的电子邮件地址。但是并不是所有目录都有某个文件,我认为我的 IF 语句可能有问题。这是我尝试使用的脚本:

#!/bin/bash
#set -x

for dirs in *
do
  echo $dirs
  cd $dirs/
  if [ -d "Seadont"]
  then 
   sed -i 's/USER1/USER2/g'
  ls
  fi
done

我的结果不正确。

最佳答案

试试这个:

#!/bin/bash
#set -x

for dirs in * ;do
  echo $dirs
  if [ -d "Seadont"] ;then 
     sed -i.bak 's/USER1/USER2/g' $dirs 
   fi
done

请注意,如果“$dirs”上有空格,它将无法工作。如果可以,我可以提出更好的解决方案,但我需要知道当前目录。

关于linux - Bash 脚本搜索和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23746032/

相关文章:

linux - bash 脚本从 shell 但不是从 cron 作业运行

python - 如何更改 shell 脚本的工作目录(这里是新手)

c - 从 Assembly 调用 C 函数 (printf) 时出现段错误

打印 ${IFS@Q} 时出现 Bash 异常

java - 独立运行代码和 war 中的代码时的不同结果

Linux Joomla 无法使用 755 权限写入文件

linux - 检查字符串是否包含星号 (*)

linux - 基本Unix复习查询: ls -ld

linux - 我想将 find 的输出通过管道传输到文件中,只获取目录名

linux - 使用 Bash 将标准输入重定向到来自不同的终端