编写嵌套 shell 脚本 - 无法传递参数

Writing a Nested shell script- Unable to pass argument

我正在尝试使用另一个脚本创建 shell 脚本。 以下是代码。

#!/bin/bash
count=$#
cat << EOF > /tmp/kill_loop.sh 
#!/bin/bash

while true;
do
    for i in "$@"
    do
       echo $i
    done

done 
EOF

当我看到 kill_loop.sh 时,“$i”是空的。

#!/bin/bash
while true;
do
    for i in "one two three"
    do
       echo

    done
done

我希望在 kill_loop.sh 文件中打印“$i”,这样如果我执行 kill_loop.sh,它会回显值 'one'、'two' 和'three'

您的 "outer" shell 脚本将 $i 解释为它自己的变量之一,未设置,因此它的计算结果为空。尝试转义 $ 以便外部 shell 不会扩展它:

echo $i

这里是 "foreach" 函数:

function foreach
{ 
    typeset cmd=;
    shift;
    for arg in "$@";
    do
        $cmd $arg;
    done
}