我只想制作一个以文件名作为参数的 bash 文件。在该 bash 文件中,我想采用扩展名之前的名称并将其作为“变量”,以便在其他地方使用。例如,如果我要运行bash_script_name sample.asm
,bash 脚本将运行:
nasm -f elf sample.asm
ld -s -o sample sample.o io.o
所以基本上的形式是bash_script_name $().asm
nasm -f elf $().asm
ld -s -o $() $().o io.o
...但是我会在 bash 中这样做。
答案1
脚本的第一个参数将位于$1
.您可以使用bash 字符串替换拉动延伸部分;这会删除最后一次出现的所有内容.
,并将结果存储在$filename
:
filename="${1%.*}"
$filename
然后您可以在脚本中的任意位置使用:
nasm -f elf "$filename.asm"
ld -s -o "$filename" "$filename".o io.o
答案2
这个特别的答案Stack Overflow 上的一个类似问题似乎是经过深思熟虑的。它包括处理其中没有点的文件(“somefile”)和其中有多个点的文件(“somefile.tar.gz”)的逻辑。