Linux 的超高生产力,Shell 有一大半功劳,因此如果想真正地把 Linux 利用起来,学习 Shell 是必经之路。
为了编写脚本实现 WordPress Google Captcha 插件的一键更新和替换地址,我需要获取指定文件的内容,替换字符串并覆盖原文(具体实现可以阅读:WP-CLI + Linux Shell 一键更新、修改 Google Captcha 插件)。
获取文件内容
cat
命令可以用来读取文件,也可以把获取到的内容赋值给变量:
temp=$(cat ./google-captcha.php)
替换字符串
用 { / / }
命令替换单个或使用 { // / }
所有匹配的字符串。temp
是包含字符串的变量,baidu
是被替换字符串,google
是替换后的字符串。将替换后的内容赋值给变量,或者直接输出。
# 替换一个字符串
single=${temp/baidu/google}
# 替换所有,注意temp后的/数量
all=${temp//baidu/google}
写入文件
echo
命令可以用来在 Shell 中输出内容或提示,也可以用它将数据写入文件。例如:
# 覆写文件
echo baidu > test.txt
# 追加内容
echo google >> test.txt
如果要写入的字符带有格式(例如代码缩进),直接使用 echo $temp > index.php
会导致格式丢失,此时可以用以下方法解决:
# 保留文本格式,注意变量的双引号
echo "$temp" > index.php