将下标的变量更改为循环中的脚本

时间:2017-01-19 13:28:07

标签: bash shell scripting

我有一个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

1 个答案:

答案 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文件),但你明白了。