linux - 将批处理文件函数转换为 bash

标签 linux bash shell batch-file

我正在尝试将这个运行 python 脚本的批处理文件转换为 bash 脚本。我需要帮助将批处理文件中等待操作完成的等待函数转换为 bash。

script.py wait-for-job <actionID> 是等待特定 Action 完成的实际调用。 wait 函数基本上是将日志文件中的一个值赋给一个变量,然后将该变量作为参数传递给 python 脚本 (script.py)。

日志文件在每个操作后连续写入,最后一行(从中获取操作 ID)看起来像这样: ojit_代码

批处理文件中的等待函数如下:

:wait
@echo off
for /f "tokens=11" %%i in (C:\Users\DemoUser\Dir\file.log) do ^
set ID=%%i
@echo on
script.py wait-for-job --action-id %ID%
EXIT /B 0

我尝试在 bash 中实现相同的功能,如下所示,但它似乎不起作用(我是 shell 脚本的新手,我确信这一切都是错误的):

for $a in (tail -n1 /home/DemoUser/Dir/file.log); do
    ID=$($a | awk { print $12})
    script.py wait-for-job --action-id $ID
done

最佳答案

下面读取文件的每一行并拉出ID并用它来调用一个py脚本。首先我们声明路径和变量。然后我们运行一个循环。

#!/bin/bash

typeset file=/home/DemoUser/Dir/file.log
typeset py_script=/path/to/script.py

readonly PY=/path/to/python

while IFS= read -r line ;do
        ${PY} ${py_script} wait-for-job --action-id $(${line} | awk { print $12})
done < "${file}"

关于linux - 将批处理文件函数转换为 bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58208496/

相关文章:

linux - 在 Linux : writing into a FIFO

c++ - 如何使 C++ 程序使用超过 4GB RAM?

bash - 编辑上一个命令输出的第 n 行的快速方法

linux - bash 执行代码在执行 ' sudo -i' 后停止

bash - 在 bash 脚本中获取调用者脚本的名称

php - 使用 EC2 中的默认 ubuntu 用户进行 git 克隆会很危险吗?

c++ - 为什么 gdb 在 eclipse 中运行良好,但在命令行中运行良好?

bash - 在 bash shell 脚本中检查目录的问题

python - [[ -z "path"]] 在 bash 中意味着什么

linux - Bash 按关键字排序列表