read -p "The Process running for "$days" days continuously OK to kill this process (y/N)? " -u 4 ok
[[ "${ok}" =~ y ]] || continue
echo "Killing $pid"
kill -HUP "$pid"
fi
这是我的脚本的片段,当我执行它时,它显示为
`=~' is not expected.
如何解决?
答案 0 :(得分:1)
我猜你的shebang行有#!/bin/sh
,所以你无法访问完整的ksh
语法。如果你这样做,ksh93
似乎确实支持[[ string =~ regex ]]
语法,那么这里的某些内容并没有正确添加。
无论哪种方式,都有一个结构可以在经典的Bourne shell中使用,您可以使用它,还有额外的好处,即您的脚本将与ksh
不可用的系统兼容。
你使用read -p <prompt>
但这是一个Bashism; -p
的{{1}}选项在read
中具有完全不同的含义。
ksh93
您的代码在输入中的任何位置查找printf 'Process ran for %i days continuously, OK to kill this? ' "$days"
read -u 4 ok
case $ok in [Yy]* ) ;; *) continue ;; esac
echo "Killing $pid"
kill -HUP "$pid"
,但我将其限制为仅检查第一个字符。
(你的代码有不稳定的缩进和我未省略的未成对y
。)
答案 1 :(得分:0)
if [[ "${ok} == "y" ]]
我尝试复制您的代码段,但我得到了一个不同的错误。 D&amp; C的时间 - 简单的ksh93脚本测试&#39; =〜&#39;