我有一个用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但没有成功。
请帮帮我!
答案 0 :(得分:2)
所以问题是您的CSV文件中有Windows行尾。如果您运行
dos2unix testing.csv
问题应该解决。
此外,使用IFS
和eval
可能会使人不高兴。尝试类似
#!/bin/bash
while IFS="," read executable
do
"$executable"
done <testing.csv