【发布时间】:2019-12-16 16:17:05
【问题描述】:
我有一个 variables.txt 文件,其中包含如下变量名列表:
Target Location Control_A Control_B Control_C
Sample_A City Bos_1 Bos_2 Bos_3
Sample_B Countryside Rno_1 Rno2
Sample_C City Cat_1
我需要使用这些详细信息来创建可以提交给脚本的命令列表,该脚本使用这些变量名称作为以下格式的信息:
./script.sh -target /path/to/Target -location /path/to/Location -controls /path/to/Control_A,/path/to/Control_B,/path/to/Control_C -outdir /path/to/outdir
通常我会在终端中定义我的变量,例如:
Path_to_data="/home/user/data/"
Target="Sample_A"
Control_A="Rno_1"
Control_B="Rno_2"
等
然后我会提交带有变量名的命令,例如:
./script.sh -target /$Path_to_data/"$Target"_data/"$Target -Location /$Path_to_data/$Location -controls /$Path_to_data/$Control_A,/$Path_to_data/$Control_B
问题是现在我有超过 100 个工作要提交,所以这种方法不可行。
我想要一个脚本或循环来读取 variables.txt 文件,并为每一行输出一行到一个新的 output.txt 文件,其中每一行都是 ./script.sh 的完整命令输入
一个关键问题是我不知道如何自动化它,因为控件的数量因样本而异。因此,我不能简单地将 Control_A、Control_B 和 Control_C 列分配为变量,并将它们及其路径打印为 ./script.sh 输入的 -controls 部分的逗号分隔值,因为有时只有一两个控件取决于 variables.txt 文件中的行。
output.txt 如下所示:
./script.sh -target /home/user/data/SampleA_data/Sample_A -Location /home/user/data/City -controls /home/user/data/Bos_1,/home/user/data/Bos_2,/home/user/data/Bos_3
./script.sh -target /home/user/data/SampleB_data/Sample_B -Location /home/user/data/Countryside -controls /home/user/data/Rno_1,/home/user/data/Rno2
./script.sh -target /home/user/data/SampleC_data/Sample_C -Location /home/user/data/City -controls /home/user/data/Cat_1
提前感谢您的帮助。
【问题讨论】:
-
你的 variables.txt 文件中的分隔符是一个单独的表格,对吧?