我有一个bash脚本,想在其中写一些内容以供下次使用:
#this get the full path of the script
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/$(basename $0)"
NUMBER=10
#This change only in the first occurrence
cat "$SCRIPT" | sed "1,/NUMBER=../s/NUMBER=../NUMBER=$((NUMBER + 1))/" > "$SCRIPT"
我遇到的问题是它产生一个空文件。我可以在您自己的代码中覆盖我的bash脚本吗?
答案 0 :(得分:4)
cat "$SCRIPT" | ... > "$SCRIPT"
不要这样做。它只会导致痛苦和痛苦。如果可以提供帮助,请不要编写自我修改代码 。但如果必须,请先写入临时文件,然后重命名。
答案 1 :(得分:1)
使用临时文件可以保存这种情况:
#this get the full path of the script
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/$(basename $0)"
NUMBER=10
#This change only in the first occurrence
sed "1,/NUMBER=../s/NUMBER=../NUMBER=$((NUMBER + 1))/" "$SCRIPT" > temp.tmp
cat temp.tmp > "$SCRIPT"
rm temp.tmp
但如果没有临时文件可以解决问题,那真的很有意思:)