【发布时间】:2015-07-15 17:32:41
【问题描述】:
一般来说,我不明白如何使 UNIX shell 脚本中的大多数命令循环工作,就像它们直接从命令行工作一样(使用 bash)。
作为一个简单的测试,一个名为 looping.sh 的脚本来执行一个 SQL 脚本(在这种情况下 filelist.txt 中的内容无关紧要):
for i in $(cat filelist.txt)
do $(sqlplus DB_USER/password@abc @test.sql)
done
结果
looping.sh:第 2 行:SQL*Plus:: 找不到命令
对于 filelist.txt 中的每一行。第二行的其他变体不起作用,例如将其放在引号中等。
或者,如果 filelist.txt 有其他 sh 脚本的名称,假设在这种情况下是一行 称为_file1.sh,我想执行它
for i in $(cat filelist.txt)
do exec $i
done
结果
: 未找到第 2 行: exec: called_file1.sh
文件都在同一个文件夹中。我尝试了第二行的变体,例如 /bin/sh $i,将其放在引号中等等。在do循环中执行命令的神奇方式是什么?
【问题讨论】:
-
您的第一个示例是否打算引用
"$i"?好像没有,而且错误信息与命令不符。 -
@kojiro 错误来自我们可以看到的命令输出的“命令”。