![]() | 1 tracyone 2016-07-16 15:37:16 +08:00 ![]() $HOME |
![]() | 2 notgod 2016-07-16 15:45:19 +08:00 export TMP_DIR=$(~/.tangolog) 没转义 |
![]() | 3 lxf1992521 2016-07-16 19:16:04 +08:00 估计是你的用户名中包含各种特殊字符,如空格、 TAB 、&、| 等,不然的话,不会出现这种情况的。 所以,以防万一,对变量要加上引号: if [ ! -d "$TMP_DIR" ] then mkdir "$TMP_DIR " |
![]() | 4 greenskinmonster 2016-07-16 19:31:33 +08:00 via Android 先用 realpath 处理下 |
![]() | 5 EchoWhale 2016-07-16 20:27:48 +08:00 via Android $HOME |
6 patrickstar OP |
![]() | 7 lcj2class 2016-07-16 23:30:09 +08:00 不知道 lz 遇到什么问题,我在 Mac 、 centos 上测试了下面的代码可以在家目录创建目录的: ``` export ff=~/.haha if [ ! -d $ff ];then mkdir $ff fi ``` |
![]() | 8 raysonx 2016-07-17 01:49:05 +08:00 我在我自己的机器上拿楼主的脚本跑了一下,是正常工作的。 从这句来看`mkdir $TMP_DIR`,$TMP_DIR 是会 Bash 被展开的,所以最好加上双引号,防止特殊符号注入。 另外, if 是不需要的,`mkdir -p "$TMP_DIR"`可以代替。 |
![]() | 9 skydiver 2016-07-17 02:09:34 +08:00 https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html ~ 展开是 bash 的功能,你用的 /bin/sh 当然不行了…… 要么改成 /bin/bash 要么用$HOME |