Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell:如何从上面的目录在多个文件上运行Shell脚本_Shell - Fatal编程技术网

Shell:如何从上面的目录在多个文件上运行Shell脚本

Shell:如何从上面的目录在多个文件上运行Shell脚本,shell,Shell,我有以下文件目录 /home/aero/airplane/case1 /home/aero/airplane/case2 .. /home/aero/airplane/casex 我有一个执行一些简单命令的shell脚本。我不想“cd”到每个目录并运行shell脚本(runscript.sh)。是否有一种更简单的方式来运行它,我可以按照以下方式键入一些内容: runscript.sh /case* 谢谢你的帮助 您可以使用第二个脚本运行runscript.sh所有情况: #In the ne

我有以下文件目录

/home/aero/airplane/case1
/home/aero/airplane/case2
..
/home/aero/airplane/casex
我有一个执行一些简单命令的shell脚本。我不想“cd”到每个目录并运行shell脚本(runscript.sh)。是否有一种更简单的方式来运行它,我可以按照以下方式键入一些内容:

runscript.sh /case*

谢谢你的帮助

您可以使用第二个脚本运行
runscript.sh
所有情况:

#In the new shell run every case
runscript.sh /home/aero/airplane/case1
runscript.sh /home/aero/airplane/case2
..
runscript.sh /home/aero/airplane/casex

您可以执行以下操作:

在/home/aero/airplane中创建一个名为runscript.sh的文件

#!/bin/bash
MAINPATH=/home/aero/airplane
CHILD_DIR=$(ls | grep -v runscript.sh)

for i in $MAINPATH
do 
    cd $MAINPATH/$i 
    pwd
    cd ..
done
运行:

请确保脚本一次输入运行它的所有目录


现在,您可以将“pwd”行更改为在所有目录中执行任何操作。

这种方法的问题是,您必须创建第二个脚本,这会消耗时间,并且特定于第二个脚本中列出的情况。我见过一些命令(我现在记不起来了),它们能够使用通配符参数(case*)运行脚本。我正在寻找更直接的命令。我知道如何使用以下命令提交shell脚本:'cd case1;sh“我希望能够键入”cd case*;“runscript.sh”和脚本将能够为所有案例目录运行。我希望其他用户能够在不设置额外文件/外壳的情况下运行此功能。我认为我得到了您所需要的,但我认为不可能在主脚本(在本例中为runscript.sh)上设置cd case*这样的本机运行程序来运行所有情况。我认为最接近于此的方法是在runscript.sh中创建一个例程来执行此操作,并在/usr/bin或另一个保存系统二进制文件和命令的文件夹中创建一个符号链接,以便可以从任何地方使用脚本。如果你多解释一下你的想法,我可能会更详细。
sh runscript.sh