在Linux中,这个shell脚本可以工作:
# Temporary directory for me to work in
myTEMP_DIR="$(mktemp -t -d zombie.XXXXXXXXX)"
# Change to temporary directory
cd "${myTEMP_DIR}"
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的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
Run Code Online (Sandbox Code Playgroud)
谁知道什么是错的?谢谢.
ric*_*ici 17
在Mac OS X上,获取参数的-t选项,mktemp该参数是临时文件/目录名称的前缀.在Linux上,-t参数只是表明前缀应该是$TMPDIR默认值或某些默认值/tmp.
因此,在Mac OS X,调用mktemp -t -d zombie.XXXXXXXXX,表示-t有一种说法是-d; 因此,mktemp创建一个名称以-dinside $TMPDIR(/var/folders/d8/b8d1j9x94l9fr3y21xrnc0640000gn/T/-d.QZDPA9Da)开头的文件.然后,template参数用于创建另一个文件(zombie.nwlEnHGDb在当前工作目录中).最后,它将两个名称都打印到stdout,在那里它们成为变量的值${myTEMP_DIR}(完成换行符分隔符).因此,cd失败了.
对于与平台无关的调用,请避免使用-t标记并使用显式模板:
mktemp -d "${TMPDIR:-/tmp}/zombie.XXXXXXXXX"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3826 次 |
| 最近记录: |