Linux 如何从另一个shell脚本运行shell脚本从CSV文件读取第一个shell脚本名称
我有一个用bash编写的父脚本(parent.sh):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
#!/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下面的评论不起作用,因为它没有安装,而且我没有安装它的权限,但我的问题最终得到了解决