0

我有一个脚本,它使用 sed 在 while 循环中将文本文件中的变量增加 0.25(从 0.25 到 1),并使用增量的扩展名保存新文件。一切看起来都很好,但脚本不会更改文本文件中的变量,但会正确导出它们的增量


read -p "define the increment " length_user
read -p "define the minimum length" length_start_user
length_increment=0
length_define=$length_user

length_start=$length_start_user
while [ $length_increment -lt 4 ]; do
  cp /home/students/gbroilo/Desktop/Prova.py /home/students/gbroilo/Desktop/Prova_$length_start.py

  sed -i 's/l=l0/l='$length_start'/' Prova_$length_start.py;
  length_start=$(echo "$length_start + $length_define" |bc)

  length_increment=$(( $length_increment + 1 ))
done
4

1 回答 1

1

使用seq

cd /home/students/gbroilo/Desktop/
for length in $(seq $length_start_user $length_define 4); do
  sed "s/l=10/l=$length/" Prova.py  > Prova_$length.py
done

也就是说,不要像这样修改 Python 脚本。相反,将其更改为将长度作为命令行参数,以便您可以运行

python Prova.py 3.6

代替

python Prova_3.6.py

这将是对 的一次调用sed,例如:

sed -i '1i\
import sys
s/l=10/l = sys.argv[0]' Prova.py

尽管没有真正的理由将其自动化;只需在您喜欢的编辑器中打开文件并手动进行更改。

于 2019-12-04T19:19:03.847 回答