尝试创建bash脚本来运行脚本,输入一些用户名并返回一行新行



创建一个针对wiki页面运行的bash脚本,以便立即检查贡献。该脚本当前要求您输入每个用户名1乘1,然后按enter键,它将针对整个列表运行。

我想做一些类似的事情

#! /bin/bash
users="user1,user2,user3,user4,user5 etc"
echo $users n | <script.py>

但我无法让它返回新行并自动运行,它目前只进入用户,但不会"运行";按下回车键";对我来说,懒惰我知道,但试图学习如何编写脚本,这似乎是一个不错的选择。

如有任何帮助,我们将不胜感激,谢谢!

编辑:

以下是python代码中需要输入别名/用户名的部分,然后当用户(我(输入了别名/用户名时,您在KB上按enter键,脚本就会运行

aliases_input = str(input("Enter comma separated alias(es): "))
aliases = aliases_input.split(",")
summary = []
try:
for alias in aliases:
df, total_activity_count = get_contributions(alias)
summary.append({"alias": alias, "totalContributions": total_activity_count})
summary_table = pd.DataFrame(data=summary)
print(
"Getting total contributions for:",
alias,
"n",
df,
"n",
"Total Contributions:",
total_activity_count,
"n",
)
print("Summary of all aliases", "n", summary_table)
except UnboundLocalError:
pass```

让我用一个新的答案回答,因为您的编辑也更改了问题描述。当前版本要求用户输入以逗号分隔,现在(新发布的(Python脚本中明确利用了这种格式。总体布局与以前相似。

(1( 创建bash脚本Script.sh,以便与用户一起将字符串打印到屏幕上。

#!/bin/bash
StrArray="user1, user2, user3"
echo "$StrArray"

打印到屏幕上的输出随后可以用作Python脚本ReadStdin.py的输入。

(2( 我的ReadStdin.py内容如下。一些简短的评论是:

  • 我刚刚在get_contributions中创建了一些随机输出,以便获得dftotal_activity_count
  • 为了简洁起见,我省略了try-except语句
  • 您发布的代码在循环中创建pandas数据帧。这似乎是低效的,因为它可以在所有数据都被附加后完成一次

运行./Script.sh | ./ReadStdin.py

#!/usr/local/bin/python3
import pandas as pd
import random
import sys

# Contribution function
def get_contributions(alias):
df = random.randrange(10)
total_activity_count = random.randrange(10,15)
return df, total_activity_count

aliases_input = sys.stdin.readlines()[0] # String in first element of list
aliases = aliases_input.strip().split(",")
summary = []

for alias in aliases:
df, total_activity_count = get_contributions(alias)
summary.append({"alias": alias, "totalContributions": total_activity_count})

print(
"Getting total contributions for:",
alias,
"n",
df,
"n",
"Total Contributions:",
total_activity_count,
"n",
)
summary_table = pd.DataFrame(data=summary)
print("Summary of all aliases", "n", summary_table)

我创建了bash脚本

#!/bin/bash
StrArray=("user1" "user2" "user3")
for val in ${StrArray[@]}; do
echo "$val"
done

和Python代码

#!/usr/local/bin/python3
import sys
data = sys.stdin.readlines()
print("--- PYTHON STRINGS ---")
print(data)

如果我运行./Script.sh | ./ReadStdin.py,那么data的内容对我来说就是['user1n', 'user2n', 'user3n']。也就是说,换行符确实已经包含在内了(正如@Erwin所说(。我不确定这是否回答了你的问题,但这是我所能做的最好的事情,没有关于<script.py>的任何进一步细节。

最新更新