我正在尝试使用其他脚本创建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'
答案 0 :(得分:3)
你的“外部”shell脚本正在解释$ i,好像它是它自己的一个变量,它没有被设置,因此它的计算结果为空。尝试转义$,以便外壳不会扩展它:
echo \$i
答案 1 :(得分:0)
这是&#34; foreach&#34;功能:
function foreach
{
typeset cmd=$1;
shift;
for arg in "$@";
do
$cmd $arg;
done
}