这是包含.csv
的{{1}}文件:
target,path
我在[root@server ~]# head /usr/local/CustomAppResults/App/targets.txt
server1.com,C:\\Program Files\\App\\
脚本中逐行遍历.csv
..
Bash
IFS=","
while read target path
do
# Windows target
result=$(python /root/apache-tomcat-7.0.37/webapps/App/tools/remoteStafCommand.py "$target" "dir $path /B")
resultCode=$?
echo "$result"
done
脚本将bash
文件的内容传递到csv.
脚本,其内容如下。
Python
脚本运行Python
子进程并解析结果,该结果将返回并存储在staf
脚本的result
内。
Bash
这是我得到的输出,为什么它找不到路径?它存在。
[root@server ~]# cat App/tools/remoteStafCommand.py
import subprocess,re,sys
from subprocess import CalledProcessError, check_output
print "1st arg: %s" % (sys.argv[1])
print "2nd arg: %s" % (sys.argv[2])
try:
output = subprocess.check_output(["staf", "%s" % (sys.argv[1]) , "PROCESS", "START", "SHELL", "COMMAND", "%s" % (sys.argv[2]), "WAIT", "RETURNSTDOUT", "STDERRTOSTDOUT"])
result = re.findall(r'Data\s*:\s*((?:[^\n]*(?:[\r\n]+(?!\s*}))?)+)', output, re.DOTALL)[0]
print result
except CalledProcessError as e:
print(e.returncode)
sys.exit(e.returncode)
答案 0 :(得分:0)
read
命令在空格上标记,而不是逗号。您可以通过更改IFS
的值来覆盖此值。或者,如果文本文件未用于其他任何内容,请将其格式更改为在字段之间使用空格而不是逗号。或者更好的是,让你的Python脚本直接读取和解析文件 - 简单的Bash脚本需要考虑在内。
答案 1 :(得分:0)
直接在path
文件中用双引号包装.csv
以进行转义..
[root@server ~]# head /usr/local/CustomAppResults/App/targets.txt
server1.com,"C:\\Program Files\\App\\"