如果我在Makefile中使用此代码,它会在第3行搞乱。这是我的代码:
dd if=/dev/zero bs=512 count=2880 of=testfloppy.img
device=$$(hdid -nomount testfloppy.img)
echo $device
newfs_msdos -F 12 $device
hdiutil detach $device -force
device=hdid testfloppy.img|cut -d ' ' -f 1
path=mount |grep -w '$device' | cut -d ' ' -f 3- | cut -d '(' -f 1
cp TEST.SYS $path/
hdiutil detach $device
但是,在运行此代码时,我会收到以下控制台代码:
dd if=/dev/zero bs=512 count=2880 of=testfloppy.img
2880+0 records in
2880+0 records out
1474560 bytes transferred in 0.004152 secs (355139415 bytes/sec)
device=$(hdid -nomount testfloppy.img)
echo evice
evice
newfs_msdos -F 12 evice
newfs_msdos: /dev/evice: No such file or directory
make: *** [All] Error 1
我尝试使用向后刻度,我也尝试使用$$()部分创建一个字符串,但这些都没有帮助。
答案 0 :(得分:0)
在shell脚本中使用变量的方式与在Makefile中使用变量的方式之间存在细微差别。
前:
var=10
echo $var #Works well in shell script
echo $(var) #Works well in Makefile
echo ${var} #Works well in Makefile
尝试下面的makefile
dd if=/dev/zero bs=512 count=2880 of=testfloppy.img
device=hdid -nomount testfloppy.img
echo ${device}
newfs_msdos -F 12 ${device}
hdiutil detach ${device} -force
device=hdid testfloppy.img|cut -d ' ' -f 1
path=mount |grep -w '${device}' | cut -d ' ' -f 3- | cut -d '(' -f 1
cp TEST.SYS ${path}/
hdiutil detach ${device}