微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

BASH – 根据variables创build和填充目录

我正在编写一个BASH脚本,它循环遍历列表文件pt2.lst的内容,运行一个Perl脚本并使用基于pt2.lst内容文件名保存输出。 以下代码工作:

while read p; do perl Collect_Vaf.pl $1 $p > "$p_vaf.lst" done < pt2.lst

…只是因为Perl脚本使用第二个命令行参数来命名打印到的文件。 运行上面的脚本“perl Collect_Vaf.pl $ 1 $ p”也可以在这种情况下工作。

我不想将文件保存在脚本运行的同一目录中,而是想根据pt2.lst的内容创build名称为新的目录。 我认为这将工作:

while read p; do STR = "Sample_$p" mkdir $STR perl Collect_Vaf.pl $1 $p > "$STR/$p_vaf.lst" done < pt2.lst

但是这给了我循环的每个迭代的以下三个错误消息:

如何循环通过命令的输出

Cmultithreading处理,意外的cpu消耗

如何在Windows命令行中执行for循环?

批处理脚本“继续”在循环?

批处理循环脚本

Vaf_Plotter.sh: line 11: STR: command not found usage: mkdir [-pv] [-m mode] directory ... Vaf_Plotter.sh: line 13: /.lst: Permission denied

如何创build基于variables的目录,然后将文件保存到循环中的所有目录?

以下是可能相关或不相关的详细信息列表:

文件pt2.lst是用bash脚本生成的。 每行包含一个4-5位数字

我打算通过在循环中运行多个脚本来将多个文件保存到每个新创build的目录中; 为了简单,我只包含一个

BASH脚本使用一个必需的参数$ 1来运行,它用作许多脚本命令的input文件

通过Windows批量重命名具有不同扩展名的文件

使用批处理脚本循环延迟扩展

遍历目录中的文件,创build输出文件,linux

继续总是非法在JS中切换,但打破工作正常

Bash:循环直到命令退出状态等于0

去除赋值运算符周围的空格。 那就是,而不是这个:

STR = "Sample_$p"

你必须这样写:

STR="Sample_$p"

一个问题在这里

perl Collect_Vaf.pl $1 $p > "$STR/$p_vaf.lst"

应该:

perl Collect_Vaf.pl $1 $p > "$STR/${p}_vaf.lst"

因为根据你的错误信息,没有名为$p_vaf变量。 这也意味着,当你描述你的第一个例子是“它的工作”,当然这是不正确的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐