如何在Bash中引用参数

时间:2017-05-05 12:06:41

标签: bash

我正在尝试输出一个包含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()    

2 个答案:

答案 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
}