我只有一个shell脚本。
#
. ./shprofile
if [ "$1" != "INSERT_ALL_ITEMS" -a "$1" != "INSERT_ONE_ITEM" ]
then
echo "Usage: $0 [INSERT_ALL_ITEMS|INSERT_ONE_ITEM]"
exit
fi
#
echo "Start Date & Time is.." `date`
case "$1" in
INSERT_ALL_ITEMS)
echo "Executing all Items"
;;
INSERT_ONE_ITEM)
#
echo "Executing one Item"
;;
*)
echo "Invalid Options!!"
;;
esac
#
echo "Stop Date & Time is.." `date`
如果我使用以下命令执行上述脚本
./runItemsBatch.sh INSERT_ALL_ITEMS
然后显示回显消息,而不是执行脚本
Usage: ./runItemsBatch.sh [INSERT_ALL_ITEMS|INSERT_ONE_ITEM]
脚本有什么问题?为什么即使我给出了正确的选择,它也没有执行脚本。 需要帮助。
答案 0 :(得分:0)
鉴于您的脚本在我的CentOS 7虚拟机上运行良好(注释了对其他文件的引用),我认为可能是您没有正确设置解释器。
第一行(#
)应该是shabang(#!
),后跟解释器。例如:#!/bin/sh
。
您还可以尝试删除脚本中参数的引号,因为解释器可以将其解释为文字。 我的意思是您应该尝试替换行
if [ "$1" != "INSERT_ALL_ITEMS" -a "$1" != "INSERT_ONE_ITEM" ]
使用
if [ $1 != "INSERT_ALL_ITEMS" -a $1 != "INSERT_ONE_ITEM" ]
尝试这两件事。但是,就我而言,该脚本可用于“ shabang / no shabang 和 quotes / no quotes ”
的每种组合希望我能帮上忙。
编辑:还要尝试删除if中的变量和运算符之间的空格(同样,这些规则取决于您使用的解释程序,或默认使用)