我创建了这个小小的Python脚本 Essai_Bash.py 来进行一些测试:
#!/usr/bin/python
import argparse
import os
parser = argparse.ArgumentParser()
parser.add_argument('-i', action='store', dest='InputDir', help='Working Directory') # Empty folders for outputs.
parser.add_argument('--version', action='version', version='%(prog)s 0.1')
results = parser.parse_args()
print 'Current input directory =', results.InputDir
dir_path=str(os.path.abspath(results.InputDir)) # Retrieving an output folder name to use as species ID:
path,CodeSp = os.path.split(dir_path)
print "Currently working on species: "+str(CodeSp)
回到我的shell,我输入以下命令,期望我的脚本在我的" Essai_Bash"中出现的每个目录上运行。文件夹:
listdir='ls ../Main_folder/' # I first used backtips instead of simple quotes but it did not work.
for dir in $listdir; do ./Essai_Bash.py -i ../Main_folder/$dir; done
我肯定错过了一些明显的东西,但它不起作用。似乎$ listdir被视为字符串而不是目录列表。但是,只需在我的shell中键入$listdir
实际上就会给我这个列表!
答案 0 :(得分:2)
只需使用glob扩展,解析ls输出是不安全的。
此外,dir
变量已包含../Main_folder/
listdir=( ../Main_folder/*/ )
for dir in "${listdir[@]}"; do ./Essai_Bash.py -i "$dir"; done