我最近刚制作了这个剧本:
if test -s $HOME/koolaid.txt ; then
Billz=$(grep / $HOME/koolaid.txt)
echo $Billz
else
Billz=$HOME/notkoolaid
echo $Billz
fi
if test -d $Billz ; then
echo "Ok"
else touch $Billz
fi
基本上,如果文件$HOME/koolaid.txt
文件不存在,那么Billz将被设置为$ HOME / koolaid.txt。然后它会成功创建文件。
但是,如果我确实制作了koolaid.txt,那么我就得到了这个
mkdir: cannot create directory : No such file or directory
任何帮助将不胜感激
答案 0 :(得分:1)
以下是变量和评估内容的内容之间的差异......
如果您的变量包含字符串$HOME/some
- ,则需要将其展开以获取/home/login/same
一个危险方法是eval
。
bin=$(grep / ~/.rm.cfg)
eval rbin=${bin:-$HOME/deleted}
echo "==$rbin=="
除非你完全确定你的评价,否则不要评估...
答案 1 :(得分:0)
以下是一些需要解决的问题:
使用“shebang”启动脚本,例如:
#!/bin/sh
这样shell就会知道你想把它作为Bourne shell脚本运行。
此外,脚本顶部的条件不能很好地处理.rm.cfg存在但不包含斜杠字符的情况。在这种情况下,rbin变量永远不会被设置。
最后,尝试添加行
ls ~
在顶部,这样你就可以看到shell如何解释波形符;这可能是问题。