zsh 脚本不工作

zsh 脚本不工作

我必须执行几个命令来编译我的程序集文件,因此我决定为其编写一个脚本。我需要编译的命令hello.asm

nasm -fmacho64 hello.asm ; creates hello.o file which I need to compile with gcc
gcc -o exe hello.o -lSystem

所以我编写了一个脚本来执行此操作,还执行结果并删除所有内容:

nasm -fmacho64 $1
temp=${$1/.asm/.o}
gcc -o exe $temp -lSystem
./exe
rm exe
rm $temp

我正在 上执行此操作,但我检查了替换在和zsh上的工作原理相同。它说以及后面的一些其他错误:bashzshbad substitution

➜ ./asm_execute.sh hello.asm
./asm_execute.sh: line 2: ${$1/.asm/.o}: bad substitution
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
./asm_execute.sh: line 4: ./exe: No such file or directory
rm: exe: No such file or directory
usage: rm [-f | -i] [-dPRrvW] file ...
       unlink file

答案1

$你的表情中有太多迹象。

您可以说$1${1}来访问第一个参数的值。如果要修改该值,则需要使用第二种形式。所以你想要的是-大括号内${1/.asm/.o}没有第二个。$

相关内容