在bash中为变量分配文件名

时间:2017-10-25 10:13:14

标签: bash

我正在编写一个脚本,通过接受用户指定的.s文件在Linux中生成可执行文件(arm可执行文件)。所以用户输入一个输入文件,比如" input.s"和输出文件名,比如" output.axf"并且脚本生成所需的输出(可执行文件 - .axf)。现在我想要一个额外的选项,其中,如果用户没有在参数中给出输出文件名,我想自己创建一个默认输出文件。脚本如下:

#!/bin/bash
echo Enter the names of the input file and output file
read input_file output_file

if [ -z "$input_file" ] 
    then
        echo "No input supplied"

elif [ -z "$output_file" ]
    then
        $output_file=brot.axf

elif [ -z "$input_file" && -z "$output_file" ]
    then
        echo "No input/output file supplied"
fi

ifilename=$(basename "$input_file")
ifilename="${input_file%.*}"

armasm -g --cpu=8-A.64 "$input_file"
armlink "$ifilename.o" -o "$output_file"
fromelf --test -c $output_file > disassembly.txt

现在我的问题是,每次运行脚本并且没有为$ output_file指定任何内容时,我都会收到此错误:

./ script_test.sh:line 12:= brot.axf:command not found

致命错误:L3901U:选项缺少参数' o'。

但是,当我指定带扩展名的输入和输出文件名时, 它按预期工作。 如果用户没有分配错误,如何修复错误并为输出文件指定默认名称?

2 个答案:

答案 0 :(得分:2)

变量分配不会在main-page.js shell中使用RssListViewModel.load().then(function(data){ page.bindingContext = pageData; }); 表示法。您只需要在$

之后
bash

如果$是一个变量,并且尝试构建一个附加了output_file="brot.axf" 的名称,则稍后在脚本中,将变量名称括在filename中,以便正确扩展变量< / p>

.o

同样从它的外观来看,{}中的变量可能是armlink "${filename}.o" -o "$output_file" 。如果你在乎试图使用它,请按照上面的说法重复引用它。

答案 1 :(得分:0)

你必须删除第12行的output_file前面的$。

output_file=brot.axf