我需要创建一个新文件名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
你需要使用引号,否则你的命令将被执行。