在Linux中,这个shell脚本可以起作用:
# Temporary directory for me to work in
myTEMP_DIR="$(mktemp -t -d zombie.XXXXXXXXX)"
# Change to temporary directory
cd "${myTEMP_DIR}"
但是,当我在Mac上执行此操作时,出现以下错误:
dhcp-18-189-66-216:shell-scripting-sci-day2 myname$ myTEMP_DIR="$(mktemp -t -d zombie.XXXXXXXXX)"
dhcp-18-189-66-216:shell-scripting-sci-day2 myname$ cd "${myTEMP_DIR}"
-bash: cd: /var/folders/d8/b8d1j9x94l9fr3y21xrnc0640000gn/T/-d.QZDPA9Da
zombie.nwlEnHGDb: No such file or directory
任何人都知道什么是错的?谢谢。
答案 0 :(得分:17)
在Mac OS X上,-t
的{{1}}选项接受一个参数,该参数是临时文件/目录名称的前缀。在Linux上,mktemp
参数只表示前缀应该是-t
的值或某些默认值,通常是$TMPDIR
。
因此,在Mac OS X上,调用/tmp
表示mktemp -t -d zombie.XXXXXXXXX
参数为-t
;因此,-d
会在mktemp
(-d
)内创建一个名称以$TMPDIR
开头的文件。然后,template参数用于在当前工作目录中创建另一个文件(/var/folders/d8/b8d1j9x94l9fr3y21xrnc0640000gn/T/-d.QZDPA9Da
)。最后,它将两个名称输出到stdout,它们变为变量zombie.nwlEnHGDb
的值(用换行符分隔符完成)。因此,${myTEMP_DIR}
失败。
对于与平台无关的调用,请避免使用cd
标志并使用显式模板:
-t