【发布时间】:2013-11-23 06:35:03
【问题描述】:
我创建了 2 个 bash 脚本。如果我跑:
./script2 $1 $2 $3
脚本按预期工作;但是,如果我使用脚本 1 运行调用脚本 2,它似乎会失败。
脚本1
while read line; do
echo $line > values
name1=$(cat values | tr ';' '\n' | grep -v tftp)
name2=$(cat values | tr ';' '\n' | grep tftp)
echo $name1
echo $name2
./script2 $name1 $name2 $3
done < /home/list
据我所知,脚本 2 中的预期命令似乎在由脚本 1 初始化时失败。我得到以下输出,但它没有显示我的文件传输,而如果我要手动初始化 script2,我会看到文件传输正在发生。
blucero@tftp password: spawn scp -r file1 tftp1:.
blucero@tftp password: spawn scp -r file2 tftp1:.
Script2只是一系列文件传输到各种tftp盒子
expect -c "spawn scp -r /home/file1 tftp1.$1:. ; expect password: ; send $3\r ; interact ;"
expect -c "spawn scp -r /home/file2 tftp1.$1:. ; expect password: ; send $3\r ; interact ;"
expect -c "spawn scp -r /home/file3 tftp1.$1:. ; expect password: ; send $3\r ; interact ;"
expect -c "spawn scp -r /home/file3 tftp1.$1:. ; expect password: ; send $3\r ; interact ;"
【问题讨论】:
-
我在您的代码中没有看到 script1。你是如何运行它的?
-
script1 是我从 bash 提示符中初始化的脚本。我只需键入 ./script1 即可运行它
-
请添加 script2 正在做什么,最好是 script2 的内容,以及当一切按预期工作时您所期望/应该发生的确切情况。
-
您的
script1有$3,但没有$1或$2。这几乎肯定是一个错误。 (从您的评论看来,它似乎根本不应该有任何参数?) -
将
set -x放在script1的顶部,这样你就可以看到它正在执行的所有命令,并填充了变量。这应该有助于你调试它。