编写嵌套 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
}
我正在尝试使用另一个脚本创建 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
}