如何从另一个Shell脚本运行一个Shell脚本,该脚本从CSV文件读取第一个Shell脚本名称

时间:2018-09-05 08:37:38

标签: linux bash shell csv

我有一个用bash编写的父脚本(parent.sh):

#!/bin/bash
IFS=","
cat testing.csv | while read line 
do
abcd="$line"
eval "$abcd";
done

以bash编写的子脚本(child.sh),我想从parent.sh调用:

#!/bin/bash

date

在父脚本中,我正在执行cat csv文件(testing.csv)以读取child.sh的名称, CSV文件列中提到的子文件名称,如下所示:

./child.sh

注意:所有文件child.sh,parent.sh和testing.csv都位于同一路径

当从csv读取名称时,我总是收到“没有这样的文件或目录”的错误,并且无法从parent.sh执行child.sh。

子脚本和父脚本均具有chmod 777权限 我尝试了所有语法来在父级内部执行子级,例如: sh child.sh,bash child.sh,源child.sh但没有成功。

请帮帮我!

1 个答案:

答案 0 :(得分:2)

所以问题是您的CSV文件中有Windows行尾。如果您运行

dos2unix testing.csv

问题应该解决。

此外,使用IFSeval可能会使人不高兴。尝试类似

#!/bin/bash

while IFS="," read executable
do
        "$executable"
done <testing.csv