对于一些字符串的处理,比如提取字符串中的数字、字符串特殊符号分割等,使用Python的一些函数效率更高。这就需要在sh脚本里面编写Python程序,并获得返回值。
###cat语句之后是python程序,并保存为tmp_ID.py
cat <<EOF > tmp_ID.py
#!/bin/bash
import sys
argv1=sys.argv[1]
def ID_reduce():
part1=argv1.split("=")
print(part1[1])
return part1[1]
ID_reduce()
#sys.exit(re_ID)
EOF
ID_name=$(scontrol show jobid=5557010)
a=$(python3 tmp_ID.py $ID_name)
echo $a
本小程序是搭配slurm使用的,获得jobid=5557010的所有信息,并将此保存为ID_name(变量),运行tmp_ID程序,将返回的参数保存在变量a中。
PS:在子程序def: ID_reduce中必须要包括print(part1[1]),不然无法返回值,也就是变量a是空值。
参考:
shell - Assign return value from python method to a variable in bash script - Stack Overflow