2013-11-27 27 views
0

嘿,我有循环,我需要运行选定的文件,但我没有任何想法如何我可以从不同的目录运行sh文件?bash - 运行循环中的.sh

for f in "${FILES[@]}"; 
do 
    if [[ $(basename $f) == *"$2" ]]; 
    then if [ -e "$f/run.sh" ] 
     then echo "FOUND" && sh f/run.sh && break 
     else echo "NOT FOUND" 
     fi 
    fi 
done 

回答

0

展开$f

then echo "FOUND" && sh "$f"/run.sh && break 

还取决于什么run.sh呢,你可能需要使用source,而不是在一个单独的新shell中运行它:现在

then echo "FOUND" && source "$f$"/run.sh && break 
+0

OK,在这个脚本中创建“屏幕”与文件位于不同的目录。但run.sh不读这个文件,并没有创建新的“屏幕”。任何想法如何运行它? – user1366028

+0

@ user1366028是“$ f”目录吗?也许你想'cd'$ f“&& source run.sh && cd ..'? – Paulpro

+0

我有'&& cd“$ f”&& ls && source“$ f /”run.sh',我认为带有“屏幕”的脚本正在运行,但是在脚本中找不到$ server_name(带文件名的变量) – user1366028