bash - 在 Unix 中不同时写入文件

标签 bash file unix

我在变量中有字符串,我想将它从变量写入文件,但前提是这个字符串和文件的内容不同。

最佳答案

您必须将文件的内容存储在一个变量中,并检查变量是否相同。像这样的东西:

[[ "$var" != "$checkvar" ]] && echo "$var" >> file || echo "content same"

测试:

$ var=jaypalsingh        # Create a variable
$ cat file               # Content of the file
jaypalsingh
$ checkvar=$(<file)      # Add the content of the file to variable
$ [[ "$var" != "$checkvar" ]] && echo "$var" >> file || echo "content same"
content same

$ var=jaypal
$ [[ "$var" != "$checkvar" ]] && echo "$var" >> file || echo "content same"
$ cat file
jaypalsingh
jaypal

现在,如果您的文件很大且包含很多行,这将变得更加困惑和复杂。变量将需要在其中有明确的新行。

$ var=jaypalsingh$'\n'jaypal     # Variable with new line
$ echo "$var"
jaypalsingh
jaypal
$ cat file
jaypalsingh
jaypal
$ checkvar=$(<file)
$ [[ "$var" != "$checkvar" ]] && echo "$var" >> file || echo "content same"
content same

[[..]] 周围的引号不是必需的,但此处的使用将防止元字符,如 that other guy 的评论中所建议的那样.他还就 echo 的用法提出了另一个有效观点。 printf 更适合在这里生成您的变量。

关于bash - 在 Unix 中不同时写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23964072/

相关文章:

linux - 在 PS1 之后添加一个换行符

file - ASP.Net MVC - 从 HttpPostedFileBase 读取文件而不保存

php - 获取 mp4 文件标签

unix - 如何在 screen session 中控制 screen session ?

linux - BASH:如何对管道中的数字执行算术运算

unix - 如何在 ColdFusion rsh 命令中更改用户的主要 unix 组?

bash - 如何使用 nmap 确定给定范围内的哪些 IP 具有端口 80?

bash - 从GitHub存储库克隆/下载特定文件

linux - 计算目录中包含的文件

php - 在php中编写sql代码并用php将变量写入文件