【发布时间】:2019-02-10 08:09:01
【问题描述】:
我有一个用 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 file(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 但没有成功。
请帮帮我!
【问题讨论】:
-
“在同一路径中”...那么在 what 路径中?该路径是否包含在进程的
PATH环境变量中?你设置了吗? -
@arkascha 不,没有 PATH 环境。变量集,我的意思是它在同一个文件夹中
-
这对我有用,未经修改。您收到的确切错误消息是什么?您是否有可能在 CSV 文件中出现杂散的 Windows 行尾?如果我强制 Windows 行结尾,我会收到错误“:没有这样的文件或 directoryd.sh”...
-
@Jon ,是的,这是我得到的确切错误“没有这样的文件或 directoryd.sh”
-
@Jon,从你的观点 "stray windows line" ,我得到了一个线索,并在互联网上找到了一个 sed -e 's/\r/\n/g' 来解决这个问题:) , 你在dos2unix下面的评论因为没有安装所以不生效,我也没有权限安装,但是我的问题终于解决了