为什么OS X上的mktemp被一个可以在Linux上运行的命令破坏了?
发布时间:2020-12-14 01:35:32 所属栏目:Linux 来源:网络整理
导读:在 Linux中,这个shell脚本可以工作: # Temporary directory for me to work inmyTEMP_DIR="$(mktemp -t -d zombie.XXXXXXXXX)"# Change to temporary directorycd "${myTEMP_DIR}" 但是,当我在我的Mac上执行此操作时,我收到以下错误: dhcp-18-189-66-216:s
在
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 谁知道什么是错的?谢谢. 解决方法
在Mac OS X上,mktemp的-t选项接受一个参数,该参数是临时文件/目录名称的前缀.在Linux上,-t参数只表示前缀应该是$TMPDIR的值或某些默认值,通常是/ tmp.
所以在Mac OS X上,调用mktemp -t -d zombie.XXXXXXXXX,表示-twith参数是-d;因此,mktemp在$TMPDIR(/var/folders/d8/b8d1j9x94l9fr3y21xrnc0640000gn/T/-d.QZDPA9Da)中创建一个名称以-d开头的文件.然后,template参数用于创建另一个文件(zombie.nwlEnHGDb,在当前工作目录中).最后,它将这两个名称打印到stdout,它们变为变量${myTEMP_DIR}的值(完成换行符分隔符).因此,cd失败了. 对于与平台无关的调用,请避免使用-t标志并使用显式模板: mktemp -d "${TMPDIR:-/tmp}/zombie.XXXXXXXXX" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |