我有一个bash脚本,如下所示:
if [ $# -eq 2 ]; then
REDIS_HOME=$2
else
if [ $# -eq 3 ]; then
REDIS_HOME=$2
PORTS=$3
else
REDIS_HOME="/usr/local/redis"
fi
fi
case "$1" in
start)
if [ -z "$PORTS" ]; then
cmd="$REDIS_HOME/bin/redis-server $REDIS_HOME/redis-6379.conf"
$cmd
else
IFS=",";
for port in $PORTS
do
cmd="$REDIS_HOME/bin/redis-server $REDIS_HOME/redis-$port.conf"
$cmd
done
fi
;;
*)
;;
esac
exit 0
当我使用my_script.sh start
运行脚本时,通过在脚本中使用默认的redis home,它可以很好地工作。但是当我与my_script.sh start /usr/local/redis 6379
一起运行时,它显示为"/usr/local/redis/bin/redis-server /usr/local/redis/redis-6379.conf" No such file or directory
。
基本上,我要传递相同的REDIS_HOME
,但是我无法弄清楚如果脚本作为参数传递时,脚本为什么无法解析路径。
答案 0 :(得分:2)
SDWebImageDownloader.shared().setValue("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", forHTTPHeaderField: "Accept")
引起了问题。当你做
IFS=,
它使用$cmd
将$IFS
的扩展分解为单词。由于$cmd
中没有空格,因此不会将空格视为程序名称和参数之间的分隔符,因此将整个结果视为程序名称。当然也找不到。
我不确定为什么首先需要$IFS
变量。您可以这样做:
$cmd