我有这个脚本(以及其他)在每次登录/午夜时生成我的壁纸。它有755个权限。部分代码:
#/bin/bash
convert -size 1440x900 xc:none wall.png
composite -gravity center ../pics/im256.png wall.png wall.png
composite -geometry 118x67+661+578 ../pics/im-title-white.png wall.png wall.png
TIME=`$HOME/bin/time.py | grep "\."`
if [[ $TIME == *\'* ]]
then
# <...1...>
else
# <...2...>
fi
如果我的$TIME
变量中包含'
个符号,我很感兴趣。当没有'
符号时 - 一切都很好。
现在,当我知道至少有一个'
符号(或者我可以强迫这样做)时,当我双击脚本时,我发现自己在else
语句中,当我运行时终端中的脚本 - 我发现自己在then
语句中。我想总是得到then
陈述,但是如何?
我裁剪了失败的部分(左 - 正确,正确 - 错误):
答案 0 :(得分:3)
直到我发现shebang实际上并不是一个shebang,我才写了一篇文章。 #!/bin/bash
解决了这个问题。
似乎不正确的shebang默认为/bin/sh
无法正常运行。我的登录shell是/bin/bash
,这意味着即使没有bash
关键字也可以从shell运行,例如:./script.sh
默认为bash而不是sh。为什么双击时不能这样做..