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

时间:2015-04-20 14:31:11

标签: bash shell for-loop argument-passing

我正在尝试使用其他脚本创建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'

2 个答案:

答案 0 :(得分:3)

你的“外部”shell脚本正在解释$ i,好像它是它自己的一个变量,它没有被设置,因此它的计算结果为空。尝试转义$,以便外壳不会扩展它:

echo \$i

答案 1 :(得分:0)

这是&#34; foreach&#34;功能:

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