我在网上关注Lynda.com课程。
我正在努力学习尽我所能,但我仍然在努力使用Command Substitution,Arrays和If循环。
#!/bin/bash
MLOG="/var/log/mail.log"
SLOG="/var/log/syslog"
echo "Which log(s) do you want to see? "
echo "[1] Head Of Mail.log?"
echo "[2] Head Of Syslog?"
echo "[3] Tail Of Mail.log?"
echo "[4] Tail Of Syslog?"
echo "[5] Dump Mail.log to File?"
echo "[6] Dump Syslog to File?"
read -p "Select an option [1-6]: " OPTION
if
test "$OPTION" -eq "1"
then
head $MLOG
elif
test "$OPTION" -eq "2"
then
head $SLOG
elif
test "$OPTION" -eq "3"
tail $MLOG
elif
test "$OPTION" -eq "4"
tail $SLOG
elif
test "$OPTION" -eq "5"
cat "$MLOG" > ./MessageLogDump.txt
echo "Message.Log Successfully Dumped in PWD"
elif
test "$OPTION" -eq "6"
cat "$SLOG" > ./SysLog.txt
echo "Syslog Successfully Dumped in PWD"
else $? -ne "0"
echo "Something went wrong somewhere"
else z $OPTION
echo "You selected an incorrect option"
fi
我在任何输出上都收到错误:即使只有STDIN为“1”
./GenSysLog.sh: line 43: syntax error near unexpected token `elif'
./GenSysLog.sh: line 43: ` elif'
我尝试在这里搜索其他问题和答案时出现同样的错误,我注意到有人提到CR& LF,但我仍然无法理解。
谢谢。
答案 0 :(得分:0)
除环境变量和内置shell变量外,不要使用大写变量名称 - 这样做会增加命名空间冲突的风险。除此之外,请考虑case
声明:
error() { echo "Something went wrong somewhere"; }
trap error ERR
read -p "Select an option [1-6]: " option
case $option in
1) head "$MLOG" ;;
2) head "$SLOG" ;;
3) tail "$MLOG" ;;
4) tail "$SLOG" ;;
5) cat "$MLOG" > ./MessageLogDump.txt
echo "Message.Log Successfully Dumped in PWD" ;;
6) cat "$SLOG" > ./SysLog.txt
echo "Syslog Successfully Dumped in PWD";;
*) echo "You selected an incorrect option" ;;
esac
更短更容易阅读。