如何将文件中的每一行作为参数传递给脚本?

How to pass each line in a file as argument to a script?

我正在做一个连接远程和拉文件的项目,并用这些做一些工作files.While拉文件在远程有几个目录,所以拉每个文件夹是时间taking.So 有没有可以在下面编写的脚本中使用的命令,以便它可以自动提取文件夹中的所有文件。

#!/bin/bash

clear

ssh someName@192.168.X.X 'ls SomeFolder/SomeSubFolder' > folders.txt

cat folders.txt
echo "Enter the folder name "
read folder_name

scp -r someName@192.168.X.X:SomeFolder/SomeSubFolder/$folder_name/ $folder_name/

while IFS= read -r -d '' file; do
    # single filename is in $file
    python scanner_new.py /home/nsadmin/Kiran/bash_script_run_files/"$file"
done < <(find "$folder_name" -type f -print0)
rm -rf $folder_name

这里每次脚本请求 folder_name 并且当用户输入 folder_name.The 脚本时会转到远程并带文件并执行一些操作 operation.Now 第一次转到远程时带来 folders.txt file。因此它包含所有文件夹 names.So,并使用这些名称作为参数传递给 python scanner.py $file_name

Folders.txt 看起来像这样

2016_9_25
2016_9_26
2016_9_27
2016_9_28
2016_9_29
2016_9_30
2016_9_7
2016_9_9

您可以使用 Python 解析 txt 文件:

from os import path

def do_stuff_with_folder(folder_name):
  folder_name = folder_name.strip()
  script_name = path.join("/home/nsadmin/Kiran/bash_script_run_files/", folder_name)
  if path.exists(folder_name):
    print "Do stuff with folder %s" % folder_name
    # do stuff with folder_name here
  else:
    print "Warning : %s not here" % folder_name

with open('folders.txt') as folder_names:
  for folder_name in folder_names:
    do_stuff_with_folder(folder_name)

循环现在在 Python 内,您只需要调用上面的脚本 :

python scanner_new.py