我在变量中有字符串,我想将它从变量写入文件,但前提是这个字符串和文件的内容不同。
最佳答案
您必须将文件的内容存储在一个变量中,并检查变量是否相同。像这样的东西:
[[ "$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/