Makefile一直搞乱BASH变量

时间:2015-05-05 09:36:01

标签: macos bash makefile

如果我在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

我尝试使用向后刻度,我也尝试使用$$()部分创建一个字符串,但这些都没有帮助。

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}