我有两个脚本。
1)script1.sh
- >它只会调用script2.sh
并保留日志和时间等。我无法对script1.sh进行任何更改。它仅用于调用script2.sh
2)script2.sh
- >它只是一个命令,可以将一个文件从特定位置加载到另一个位置。我将位置1的文件名作为参数1和文件名传递给位置2作为参数2。
script2.sh:
file1=$1
file2=$2
/home/test put /home/$1 uploads/final/$2
我运行的最终脚本是:
script1.sh script2.sh file1=abc.csv file2=xyz.csv
但不知怎的,我不能使用被调用脚本的参数2.有没有办法可以使用被调用脚本2的参数而无需更改脚本1.
对此有任何帮助将不胜感激。
答案 0 :(得分:0)
script2.sh
无法访问script1.sh
提供的参数。如果script1.sh
没有将参数传递给script2.sh
,则可以使用环境变量。
file1=abc.csv file2=xyz.csv script1.sh script2.sh
这会在调用file1
时设置环境变量file2
和script1.sh
。除非script1.sh
采取有意的措施覆盖它们,否则它们会自动传递给script2.sh
。
然后,您可以移除script2.sh
中分配给file1
和file2
的行。它们已经被置于环境中。
答案 1 :(得分:0)
像大脑一样思考。正如Barmar所说,使用环境变量:
创建一个启动器脚本:
#!/bin/sh -
export SCRIPT2_A1=$1
export SCRIPT2_A2=$2
script1.sh script2.sh
现在将script2.sh更改为:
#!/bin/sh
A1=${SCRIPT2_A1:-$1}
A2=${SCRIPT2_A2:-$2}
# now use A1 and A2 as you would $1 and $2
答案 2 :(得分:0)
使用$ script1.sh "script2.sh file1=abc.csv file2=xyz.csv"
这是添加双引号