xargs отсутствует опция -n 1
.
С man xargs
:
-n max-args, --max-args = max-args
Использовать не более max-args аргументов в командной строке.Если будет превышен размер (см. Параметр -s), будет использовано меньше аргументов, чем max-args, если не задана опция -x, в этом случае xargs завершит работу.
xargs в противном случае попытаетсявыполните команду с максимально возможным количеством параметров, что имеет смысл для большинства команд.
В вашем случае ls *tomcat* | xargs sh
работает sh stop_tomcat_center.sh start_tomcat_center.sh
, а stop_tomcat_center.sh, вероятно, просто игнорирует параметр $1
.
Также не рекомендуется использовать вывод ls.Лучше было бы использовать find -maxdepth 1 -name '*tomcat*' -print0 | xargs -0 -n 1 sh
или for command in *tomcat*; do sh "$command"; done
Этот ответ основан на предположении, что ОП означало «оба с одной командной строкой», когда он писал «одновременно».
Для решений по параллельному выполнению взгляните на другие ответы.