bash echo正在执行命令,而不是添加我需要的内容



我需要创建一个新文件名test.sh。我需要用echo或其他东西来写这些行,但不能手动打开新文件并写入它。也就是说,我必须在bash中写一些东西,以便创建以下文件:

TEST_VALUE=$1
if [[cat data | grep $TEST_VALUE]]; then
exit 1
fi
exit 0

但是,当我通过echo这样做时,结果是:

TEST_VALUE=
if [[]]; then
exit 1
fi
exit 0

我需要的文件,因为我写$1,而不是参数和grep。我试图grep每一行,但它正在执行命令,而不是像我想要的那样复制它。我该怎么做呢?谢谢你

忽略你试图复制的内容有问题,最好的方法是使用引号:

cat >file <<'EOF'
TEST_VALUE=$1
if [[cat data | grep $TEST_VALUE]]; then
exit 1
fi
exit 0
EOF

但是内容车!更好的版本应该是这样的:

cat >file <<'EOF'
#!/bin/sh
test_value=$1
! grep -q -e "$test_value" <data
EOF
echo 'TEST_VALUE=$1 
if [[cat data | grep $TEST_VALUE]]; then
exit 1
fi
exit 0' > test.sh

你需要使用引号,否则你的命令将被执行。

最新更新