我有一个简单的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
并将其与传入的参数相关联。这里缺少什么?
答案 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();"