我正在尝试输出一个包含MIPS代码的文本文件,但它不断拾取参数并且不会将它们写入文本文件。
代码:
function errorMessage() {
echo "You have entered the wrong amount of arguments. The default files will now be used"
echo '#input.txt' > input.txt
"add $s0 $s1 $s2" >> input.txt
"sub $s2 $t0 $t3" >> input.txt
"add $s0 $s1 $z2" >> input.txt
"lw $t1 8($t2)" >> input.txt
"addi $t3 $s0 -9" >> input.txt
"sw $s3 4($t0)" >> input.txt
"lw $t11 70000($s0)'" >> input.txt
}
结果:
#input.txt
add
sub
add
lw 8()
addi -9
sw 4()
lw 70000()
答案 0 :(得分:1)
通过写入来创建文件的一种方法是使用名为Here Document的内容。
#!/bin/bash
(
cat <<'EOF'
#input.txt
add $s0 $s1 $s2
sub $s2 $t0 $t3
add $s0 $s1 $z2
lw $t1 8($t2)
addi $t3 $s0 -9
sw $s3 4($t0)
lw $t11 70000($s0)
EOF
) > input.txt
这样做需要cat <<'EOF'
和EOF
之间的文本并将其写入input.txt。由于引用了EOF
中的cat <<'EOF'
,因此在它们之前具有$的变量不会被视为bash变量,而是实际文本。您可以将字符串EOF
替换为您想要的任何内容。您可以在此处详细了解Here Documents:http://tldp.org/LDP/abs/html/here-docs.html。
答案 1 :(得分:1)
如果您的意思是$s0
按字面输出,则需要使用单引号而不是双引号:
echo 'add $s0 $s1 $s2' >> input.txt
您可以通过编写一次(使用here-document)来改进脚本,而不是为每一行重新打开input.txt
:
function errorMessage() {
echo >&2 "You have entered the wrong amount of arguments. The default files will now be used"
cat <<'END' >input.txt
#input.txt
add $s0 $s1 $s2
sub $s2 $t0 $t3
add $s0 $s1 $z2
lw $t1 8($t2)
addi $t3 $s0 -9
sw $s3 4($t0)
lw $t11 70000($s0)
END
}