我有一个bash脚本,它接受一个文件并使用此文件执行操作。在操作期间,生成 out_file 。完成后,我将另一个脚本([https://plnkr.co/edit/32eE0ejSNBTkWJ4LVErR?p=preview][1]
)启动到我的脚本中,以对 out_file 执行另一个操作。但我遇到的问题是将参数传递给script_2
,这些参数对于每个初始文件都是不同的:
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_1
对于每个out_file应该是不同的。那么,是否可以在循环内每次传递不同的参数,而不是每次为每个文件单独启动parameter_2
?
答案 0 :(得分: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文件),但你明白了。