You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash中使用echo写入test.sh时保留$1与命令格式的方法

解决方法

问题核心是Bash会解析双引号内的变量(比如$1),导致内容被替换为空值。要保留原变量形式和命令,同时修正原脚本的语法错误(原if条件写法不符合Bash规范),可用以下两种可靠方式:

方式一:单引号包裹内容(推荐)

单引号在Bash中会完全保留内部所有字符,不解析变量或特殊符号。执行命令:

echo 'TEST_VALUE=$1
if grep -q "$TEST_VALUE" data; then
    exit 1
fi
exit 0' > test.sh

这里把原脚本的[[cat data | grep $TEST_VALUE]]改成了更高效的grep -q "$TEST_VALUE" data,-q选项让grep仅返回状态码、不输出内容,更适合在if条件中使用。

方式二:双引号配合转义符

如果必须用双引号,需把所有$转义为\$,同时转义内部的双引号:

echo "TEST_VALUE=\$1
if grep -q \"\$TEST_VALUE\" data; then
    exit 1
fi
exit 0" > test.sh

验证结果

执行命令后查看文件内容:

cat test.sh

会得到预期的正确内容:

TEST_VALUE=$1
if grep -q "$TEST_VALUE" data; then
    exit 1
fi
exit 0

内容的提问来源于stack exchange,提问作者Try_hard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:31:09