2017-01-19 155 views
0

我有一个bash脚本,它需要一个文件并使用此文件执行操作。在操作期间,产生了out_file。完成后,我将另一个脚本(script_2)启动到我的脚本中,以便对out_file执行另一个操作。但是我有问题是将参数传递给script_2,这对于每个初始文件是不同的:在脚本中将下标变量变为脚本

#/bin/bash 
for i in $(ls folder); do 
.\*operation*.sh folder/$i   # this step produces the *out_file.$i* 
.\script_2 *out_file.$i* parameter_1 parameter_2 
done 

因此,parameter_1parameter_2应该是用于每个out_file不同。那么,是否有可能在循环中每次传递不同的参数,并且不要每次为每个文件分别启动script_2

+2

'parameter_1'和'parameter_2'有多不同?你想如何设置它们?你想手动写他们?还是他们依赖于文件的名称?或者是否包含在其他文件中? – zmo

+2

也不要使用'。\'从bash调用其他脚本,但使用'。/'反斜杠运算符可能会被解释为下一个字符的转义。 – zmo

+1

根据@zmo,您需要澄清p_1和p_2的位置。 –

回答

1

没有任何很难知道你的目的是什么的详细信息:

$ ls 
script1.sh script2.sh script3.sh testfiles 

ls ./testfiles/ 
file1.txt file2.txt 

$ cat script1.sh 
#!/bin/bash 

for i in $(ls ./testfiles/); do 
     ./script2.sh $i 
     ./script3.sh ./testfiles/out_file.$i parameter_1 parameter_2 
done 

$ cat script2.sh 
#!/bin/bash 

touch ./testfiles/out_$1.txt 

exit 

$ cat script3.sh 
#!/bin/bash 

    echo "dollar1: $1 
    dollar2 $2 
    dollar3 $3 " 

$ ./script1.sh 
dollar1: ./testfiles/out_file.file1.txt 
dollar2 parameter_1 
dollar3 parameter_2 
dollar1: ./testfiles/out_file.file2.txt 
dollar2 parameter_1 
dollar3 parameter_2 

$ ls ./testfiles/ 
file1.txt file2.txt out_file1.txt.txt out_file2.txt.txt 

正如你可以看到它遍历文件夹中的所有文件,创建了文件,然后进入剧本3

我不会建议你以当前的格式再次运行脚本(它会通过out文件循环),但你明白了。