Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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 - Fatal编程技术网

Shell 通过脚本运行带参数的变量脚本

Shell 通过脚本运行带参数的变量脚本,shell,Shell,我相信有一种更简单的方法可以做到这一点,但我还没有弄清楚下一步该做什么。我们正在运行一些jboss应用程序,我希望能够使用输入参数重新启动这些应用程序。因为我希望一次重新启动多个应用程序,所以我想一个列表会很好。这是逗号分隔的。这就是我到目前为止所取得的成绩 IFS=','; while read mLine do for i in $mLine do sh jboss-{$mLine} restart done; done < /tmp/apps IFS=','; 读mLine时 做

我相信有一种更简单的方法可以做到这一点,但我还没有弄清楚下一步该做什么。我们正在运行一些jboss应用程序,我希望能够使用输入参数重新启动这些应用程序。因为我希望一次重新启动多个应用程序,所以我想一个列表会很好。这是逗号分隔的。这就是我到目前为止所取得的成绩

IFS=',';
while read mLine
do
for i in $mLine
do
sh jboss-{$mLine} restart
done;
done < /tmp/apps
IFS=',';
读mLine时
做
因为我在$mLine
做
sh jboss-{$mLine}重新启动
完成;
完成
一般来说,如果我只写“shjbossabcdefrestart”,它就可以工作,但只要我写“jboss-${mLine}restart”,它就不能工作。后者将从脚本(根据输入值是正确的脚本)返回一个响应,询问参数,如您所见,该参数位于该脚本的sh命令中。前者与后者一样启动正确的脚本,但与后者不同的是,前者实际上会重新启动所讨论的服务器

有人可能会说,我为每个应用程序都设置了一个类似的,但由于不是每次都需要重新启动所有应用程序,这会让我有很多if's this和if's this,以确定必须运行哪些行,从而破坏整洁和简单的目的

如果您有任何想法,我将不胜感激,因为我愿意尽最大努力找到解决方案。

如果您这样做:

#!/bin/sh
for app in "$@"; do
    sh "jboss-$app" restart
done
然后,您可以将应用程序名称的空格分隔列表传递给脚本

./restart-apps app1 app2 app3 ...
谢谢,效果很好:)遇到了一些新问题,但至少离我们更近了一步。