我在 ubuntu 12.04.5 上编写了一个脚本,该脚本运行良好,但是在升级到 14.04.2 以修复另一个问题后,我现在遇到了该脚本的问题。
它在第一组命令处停止了,我似乎无法确定原因;我根据谷歌搜索结果做了修改,但每次更改都会导致更多错误。
脚本当前停滞的部分是
#!/bin/bash
V=1.5.4
DELAY=3
if [ "$(id -u)" != "0" ]; then
echo "This script must be run as root" 1>&2
sleep 5
exit 1
fi
while [[$REPLY != 0 ]]; do
clear
cat <<- _EOF_
Please Select:
1. Menu option 1
2. Menu option 2
3. Menu option 3
4. Menu option 4
5. Menu option 5
6. Menu option 6
7. Menu option 7
0. Exit
_EOF_
read -p "Enter selection [0-7] >"
if [[ $REPLY =~ ^[0-7]$ ]]; then
if [[ $REPLY == 1 ]]; then
当我使用运行上述脚本时,sudo ./config.sh
我收到错误
./config.sh: line 23 [[: command not found
当我删除多余的括号时,我收到错误
./config.sh: line 23: [: !=: unary operator expected
在完整脚本中,包含 while 的行[[$REPLY != 0 ]]; do
是第 23 行
添加引号也会$Reply
导致同样的错误。
我不明白自从升级到较新的 LTS 以来,bash 内部发生了哪些变化。如能得到任何帮助,我将不胜感激。
答案1
[[
您漏掉了和之间的空格$REPLY
:
while [[$REPLY != 0 ]]; do
应该
while [[ $REPLY != 0 ]]; do