我有一个名为R_0的目录,其中我存储了一个文件R_0.py,它在当前目录中创建了许多文件并写入其中。
我想自动运行这个py文件,创建另一个目录R_1,将R_0.py复制到该目录并将其重命名为R_1.py,但在运行R_1.py之前,我需要修改其中的一些数字字段。完成后,我需要再次重复该任务(目录R_2包含文件R_2.py等。)
我需要这样做20次,所以我最终有20个名为R_1,R_2,...,R_20的目录。
我之前从未使用过脚本shell(我只知道ls,cd,mv和其他几个基本命令),但我认为执行这个20步任务的最佳方法是编写一个。
假设我们有这个R_0.py初始文件(实际上它是一个更复杂的文件,但我认为这对解决问题并不重要):
var re = /((sam)(?:wise)?)/;
var m = 'samwise'.match(re); // gives ["samwise", "samwise", "sam"]
var m = 'sam'.match(re); // gives ["sam", "sam", "sam"]
所有其他py文件之间的区别在于数字2:在文件R _ $ {i} .py中,我需要dummy = 2
,其中expr(i)是通过执行某些算术获得的另一个数值对i的操作,而不是dummy = expr(i)
。
我在dummy = 2
langage:
.sh
文件
bash
问题是我的命令#!/bin/bash
for i in $(seq 1 20) do
mkdir "/Users/usersos/Desktop/R_${i}" ;
cp "/Users/usersos/Desktop/R_0/R_0.py" "/Users/usersos/Desktop/R_${i}" ;
cd "/Users/usersos/Desktop/R_${i}" ;
mv R_0.py R_${i}.py ;
argument1=$((60000+150*i)) ;
sed 's/dummy = 2/dummy = ${argument1}/g' R_${i}.py ;
python R_${i}.py ;
done
没有写出正确的内容:在我的R _ $ {i} .py文件中,我找到了sed
而不是dummy = ${argument1}
,i = 2实例。
我通过互联网搜索并找到了工具dummy = 60300
,但我也没有成功。
答案 0 :(得分:0)
正确的脚本如下:
#!/bin/bash
for i in $(seq 1 20) do
mkdir "/Users/usersos/Desktop/R_${i}" ;
cp "/Users/usersos/Desktop/R_0/R_0.py" "/Users/usersos/Desktop/R_${i}" ;
cd "/Users/usersos/Desktop/R_${i}" ;
mv R_0.py R_${i}.py ;
argument1=$((60000+150*i)) ;
sed -i.bak "s/dummy = 2/dummy = ${argument1}/g" R_${i}.py ;
python R_${i}.py ;
done
区别在于sed
命令。我使用-i.bak
代替-i
,因为我正在使用Mac。这将创建一个新文件R _ $ {i} .py.bak。在linux上,我认为放-i就足够了。