Bash脚本参数不被视为$ 1

时间:2019-11-11 23:12:42

标签: bash

我有一个简单的bash脚本,我想在循环中从文件中提取一行,并将其作为迭代过程中的参数添加。

问题是当我传递foo时,它未被处理,脚本仍然显示$1

脚本:

#/bin/bash
echo 'var FileWriter = Java.type("java.io.FileWriter");
var fw=new FileWriter("./test.txt", true);
fw.write("\n$1");
fw.close();'

命令和输出:

writefile.sh foo

➜  Development bash test.sh foo 
var FileWriter = Java.type("java.io.FileWriter");
var fw=new FileWriter("./test.txt", true);
fw.write("\n$1");
fw.close();

我希望Bash会选择$1并将其与传入的参数相关联。这里缺少什么?

1 个答案:

答案 0 :(得分:3)

您传递给echo的字符串是单引号字符串,因此不会扩展$1。您需要使用双引号(并转义其中的所有双引号):

#/bin/bash
echo "var FileWriter = Java.type(\"java.io.FileWriter\");
var fw=new FileWriter(\"./test.txt\", true);
fw.write(\"\n$1\");
fw.close();"