bash - shell 脚本语法错误 : redirection unexpected during done command

标签 bash shell ubuntu awk

所以,我正在尝试为一个类制作一个 shell 脚本,它基本上只是执行一些管理操作。现在,我在第 27 行和第 45 行的 done 命令上遇到语法错误。我觉得这可能是我对 awk 的使用。

#!/bin/sh
ps -cefl > userInfo
while [ "$menuOption" != 4 ]; do
    echo "===================================="
    echo "Select a menu option!"
    echo "(1) Ancestry History"
    echo "(2) Who's online"
    echo "(3) What process a user is running"
    echo "(4) Exit"
    echo -n "Menu option:"
    read menuOption
    echo " "
    if [ "$menuOption" -eq 1 ]; then
        echo "The ancestry tree for the current process is. . ."
        echo " "
        PID=$$
        while [ $PID -ne 1 ]
        do
            echo $PID
            echo " | "
            while read PIDS; do
                myPID=$(echo $PIDS | awk '{print $1}')
                myPPID=$(echo $PIDS | awk '{print $2}')
                if [ $myPID -eq $PID ]; then
                    PID=$myPPID
                fi
            done < <(grep $PID userInfo | awk '{printf "%i %i\n",$4,$5}')
        done
        echo " 1 "
        echo " "
    elif [ "$menuOption" -eq 2 ]; then
        echo "Online users:"
        echo "-------------"
        who | awk '{print $1}' | sort -u
        echo "-------"
        echo " "
    elif [ "$menuOption" -eq 3 ]; then
        i=0
        echo "Select a user to see the processes!"
        echo "-----------------------------------"
        while read value; do
            listNames["$i"]="$value"
            echo "$i)${listNames[$i]}"
            i=$(($i+1))
        done < <(who | awk '{print $1}' | sort -u)
        echo -n "Select user: "
        read userOption
        echo " "
        echo "You've selected: ${listNames[$userOption]}"
        grep ${listNames[$userOption]} userInfo | awk '{printf "%-7s %-7s %-7s %-7s %-7s %-7s %-10s %s %s\n",$3,$4,$5,$9,$11,$12,$13,$14,$15}' | sort;
        echo " "
    elif [ "$menuOption" -eq 4 ]; then
        echo "Exiting Script!"
    fi
done

最佳答案

不,这是因为您使用 sh 作为解释器。将其更改为 bash。

关于bash - shell 脚本语法错误 : redirection unexpected during done command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777815/

相关文章:

bash - 如何使用特定选项限制 git 命令?

xml - 如何构建与 xsltproc 一起使用的样式表以将 xml 转换为 csv

linux - Bash 数组创建 : ("$@") vs ($@)

linux - Bash - While 循环

java - 升级到 ubuntu 14.04 后 Eclipse 上没有自动完成

bash - 使用bash脚本提取某些类型名称和对应的数字

bash - 如何指定多行shell变量?

Bash:如何检查目录是否存在?

python - 安装python包供root用户使用

apache - 无法在 ubuntu 16.04 服务器上安装 phppgadmin