不执行shell脚本

时间:2019-10-04 10:06:42

标签: linux shell unix

我只有一个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]

脚本有什么问题?为什么即使我给出了正确的选择,它也没有执行脚本。 需要帮助。

1 个答案:

答案 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中的变量和运算符之间的空格(同样,这些规则取决于您使用的解释程序,或默认使用)