当我在我的服务器上运行它时,它可以工作。
if [[ "${Month}" -gt 12 ]] || [[ "${Day}" -gt 31 ]] || [[ "${Month}" -lt 0 ]] || [[ "${Day}" -lt 0 ]] || [[ "${Year}" -lt 0 ]] || [[ "${Year}" -gt 2050 ]]; then
echo "Please enter Valid date choice."
exit 1
fi
但是当我的客户在他们的环境中运行时会产生语法错误。
bash-4.1$ ./port_generator.sh "/opt/device/server/scripts/Results" "2017-01-29"
./port_generator.sh: line 31: syntax error near unexpected token `||'
./port_generator.sh: line 31: `|| [[ "${Year}" -lt 0 ]] || [[ "${Year}" -gt 2050 ]]; then'
发布服务器成功案例:红帽企业Linux服务器版本6.5(圣地亚哥)
服务器故障发布是:Red Hat Enterprise Linux Server 6.7版(圣地亚哥)
答案 0 :(得分:-1)
您的脚本应在顶部有一个shebang行:executing send 1st time
row 42
The message is **None**
或#!/bin/bash
。但那不是问题。如果是,则错误将指向第一个#!/usr/bin/env bash
,而不是第四个。
您的实际脚本中是否有两个单独行的||
语句?这将生成您正在看到的消息:
if
如果那就是你做的,不要。或者,如果您确实希望分割线,请使用if [[ "${Month}" -gt 12 ]] || [[ "${Day}" -gt 31 ]] || [[ "${Month}" -lt 0 ]] || [[ "${Day}" -lt 0 ]]
|| [[ "${Year}" -lt 0 ]] || [[ "${Year}" -gt 2050 ]]; then
结束第一行,以便解析器知道命令未完成。
||
答案 1 :(得分:-1)
你的脚本是否有一个shebang?运行脚本的客户是什么shell?你使用相同的shell吗?
netikras@netikras-xps ~ $ bash
netikras@netikras-xps ~ $ if [[ 3 -gt 1 ]]; then echo OK; fi
OK
netikras@netikras-xps ~ $ csh
% if [[ 3 -gt 1 ]]; then echo OK; fi
[[: No match.
% exit
并非所有shell都具有相同的语法。确保您和您的客户使用相同的shell。或者使用更多信息更新答案