Linux 如何从另一个shell脚本运行shell脚本从CSV文件读取第一个shell脚本名称

Linux 如何从另一个shell脚本运行shell脚本从CSV文件读取第一个shell脚本名称,linux,bash,shell,csv,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文件列中提到的子文件名称如下: ./c

我有一个用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、source child.sh但未成功


请帮帮我

所以问题是CSV文件中有Windows行结尾。如果你跑

dos2unix testing.csv
这个问题应该解决

此外,使用
IFS
eval
可能会让人心烦。试试像这样的东西

#!/bin/bash

while IFS="," read executable
do
        "$executable"
done <testing.csv
#/bin/bash
当IFS=“,”读取可执行文件时
做
“$executable”

完成“在同一条道路上”。。。那么走哪条路呢?该路径是否包含在进程“
path
环境变量”中?你设置好了吗?@arkascha不,没有路径环境。变量集,我的意思是它在同一个文件夹中,这对我来说是有效的,未经修改。您得到的确切错误消息是什么?您是否有可能在CSV文件中出现错误的Windows行结尾?我得到了错误“:没有这样的文件或directoryd.sh”如果我强制Windows行结尾…@Jon,是的,这正是我得到的错误“没有这样的文件或directoryd.sh”@Jon,从你的观点“迷路的Windows行”,我得到了一个线索,并在internet上找到了一个sed-e's/\r/\n/g'来解决这个问题:),您在dos2unix下面的评论不起作用,因为它没有安装,而且我没有安装它的权限,但我的问题最终得到了解决