我正在尝试在bash文件中执行以下操作:
mybash.sh myinputfile.txt myloopfile.csv
创建 for循环,逐行读取 myloopfile.csv ,然后创建一个文件夹,将行号作为前缀为&#的文件夹名称34;文件夹",例如folder1,folder2 ......
然后在此folder$i
内创建一个名为输入的文件夹,另一个名为输出。
将line$i
内容写入名为 myline.txt 的文件中,并将此文件放入folder$i/input
内
并将我将作为参数传递的文件 myinputfile.txt 复制到folder$i/input
内的bash文件中。
然后运行我的个人脚本,它带有两个参数:
python myscript.py -i ./folder$i/input -o ./folder$i/output
并完成了!
myfile.csv
101,1001,10012,100121
102,101213,11122.1,12.15
103,122.15,155.2,1515.54
104,154.4,4551.1,454
我现在拥有的东西:
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
mkdir ./folder$line
echo "$line" >> Folder$line/input/myline.txt;
cp myinputfile.txt Folder$line/input
python myscript.py -i ./folder$i/input -o ./folder$i/output
done < "$1"
问题是我无法获取行索引将其作为后缀传递给文件夹名称,所以我目前得到行内容。我不知道如何阅读这两个文件从我传递给mybash.sh
的论据。
答案 0 :(得分:3)
使用计数器跟踪行号:
#!/bin/bash
input_file=$1
csv_file=$2
count=1
while IFS= read -r line || [[ -n "$line" ]]; do
input_dir="./folder$count/input"
output_dir="./folder$count/output"
mkdir -p "$input_dir" "$output_dir"
printf '%s\n' "$line" > "$input_dir/myline.txt"
cp "$input_file" "$input_dir"
python myscript.py -i "$input_dir" -o "$output_dir"
((count++))
done < "$csv_file"