【问题标题】:BASH Run multiple scripts from a another scriptBASH 从另一个脚本运行多个脚本
【发布时间】:2023-01-13 01:09:09
【问题描述】:

我对从第三个脚本运行多个脚本有疑问:

首先.sh

#!/bin/bash
echo "script 1"
#... and also download a csv file from gdrive

第二.sh

#!/bin/bash
echo "script 2"

第三.awk

#!/usr/bin/awk -f 

BEGIN {
    print "script3"
}

我想要一个按顺序运行它们的第 4 个脚本,我尝试了以下但只运行第一个脚本。

#!/bin/bash

array=( first.sh second.sh )
for i in "${array[@]}"
do
   chmod +x $i
   echo $i
   . $i 
done

但只运行第一个脚本,没有别的。

非常感谢您的支持! 圣地亚哥

【问题讨论】:

  • 遍历索引或数组,类似于:for i in "${!array[@]}"; do echo "${array[i]}}"; done
  • 你想要_____吗跑步脚本,或者来源他们?
  • 您可能正在寻找./"$i"而不是. "$i"

标签: bash


【解决方案1】:

您不能将 awk 脚本作为 shell 脚本的来源。运行脚本而不是采购它。

.(又名source)从当前 shell 中的文件执行命令,它忽略 shebang 行。

#!/bin/bash

array=( first.sh second.sh )
for i in "${array[@]}"
do
   chmod +x "$i"
   echo "$i"
   ./"$i"
done

为什么第二个脚本没有运行?我猜第一个脚本包含一个 exit,它在 source 退出 shell 时,即它不会继续运行外部包装器。

【讨论】:

  • 这个"$i" 根本不起作用。点是必需的,但带有 "/",就像 ./"$i",看到了吗?)
  • @Ivan:这取决于 $PATH 的设置,但一般来说,你是对的。固定的。
  • 但是 ./ 是一个路径,而带空格的 . 是一个内置命令。
猜你喜欢
  • 2017-12-12
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 2018-06-19
  • 2013-04-18
相关资源
最近更新 更多