大佬教程收集整理的这篇文章主要介绍了Linux – Bash将String重定向到文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#!/bin/bash -x # This script is for IncremenTing build numbers path=/home/RND/abrodov file=tst.txt tst=`cat $path/$file` printf "this is the content of the file before incremenTing: \n $tst" newexpr=`awk '/^Build number/{$4=$4+1;}1' /home/RND/abrodov/tst.txt` printf "\n the new content \n $newexpr" echo $newexpr > $path/$file
这是运行脚本之前的原始文件:
@H_171_16@major Release number = 4 Minor Release number = 1 service Pack Release number = 2 Build number = 22这是我使用脚本后的内容:
@H_171_16@major Release number = 4 Minor Release number = 1 service Pack Release number = 2 Build number = 23echo "$newexpr" > "$path/$file"
在这种情况下,$path / $file周围的引号实际上并不是必需的,但它们没有任何危害.
更一般地说,你也应该使用$()而不是反引号:
newexpr=$(awk '/^Build number/{$4=$4+1;}1' "$path/$file")
如果要实现“就地”更改文件的效果,则无需使用变量.您可以使用这样的临时文件:
awk '/^Build number/{$4=$4+1;}1' "$path/$file" > /tmp/file && mv /tmp/file "$path/$file"
使用引号的重要性
双引号保留了数据的原始格式.请参阅此简单示例,该示例使用set -x激活调试模式. sHell正在执行的命令显示在以.开头的行上.其实我看到你已经在使用#!/ bin / bash -x了. set -x做同样的事:
$s="1 > 2" $set -x $echo $s + echo 1 2 1 2 $echo "$s" + echo '1 2' 1 2
原始字符串包含换行符,但是当您在没有引号的情况下回显它时,它将被解释为echo的两个参数,而不是包含换行符的一个参数.这称为场分裂.您可以通过阅读此this wiki article了解更多关于使用双引号的重要性.
以上是大佬教程为你收集整理的Linux – Bash将String重定向到文件全部内容,希望文章能够帮你解决Linux – Bash将String重定向到文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。