如何在调用脚本之前让 Bash 脚本接受输入?

use*_*ser 7 linux bash

基本上,您通过mybashscript在控制台中键入来调用我的 Bash 脚本。然后这开始:

Welcome to mybashcript! Choose an option (login|logout|view|erase|quit|):
Run Code Online (Sandbox Code Playgroud)

然后用户输入他们想要的任何输入,然后在每个选项的相应 if 树中进一步激活 Python 脚本。

我想知道的是,我怎样才能让用户只需要输入(如果他们以前使用过该程序)诸如mybashscript login或 之类的东西mybashscript view

因此,在 Bash 脚本名称之后添加的任何单词都将作为脚本本身的第一个输入。这可能吗?

到目前为止,这是我的脚本,我不完全理解如何合并 $1 而不让它询问是否没有参数。

#!/bin/bash

echo -n "Hello $USER, welcome to the guestbook! Choose an option (sign|view|save|erase):     "

read option

if [ "$option" == "sign" ]; then
  python /usr/local/bin/guestbook.data/sign_guestbook.py

 elif [ "$option" == "view" ]; then
  python /usr/local/bin/guestbook.data/view_guestbook.py

 elif [ "$option" == "save" ]; then
  python /usr/local/bin/guestbook.data/save_guestbook.py

 elif [ "$option" == "erase" ]; then
  python /usr/local/bin/guestbook.data/erase_guestbook.py

 else
  echo "Sorry, I didn't understand that." 

fi
Run Code Online (Sandbox Code Playgroud)

Uwe*_*Uwe 14

#!/bin/bash

case $# in
0) echo -n "Hello $USER, welcome to the guestbook! Choose an option (sign|view|save|erase):     "
   read option ;;

1) option=$1 ;;

*) echo "Sorry, I didn't understand that (too many command line arguments)"
   exit 2 ;;

esac

if [ "$option" == "sign" ]; then
  python /usr/local/bin/guestbook.data/sign_guestbook.py

elif [ "$option" == "view" ]; then
  python /usr/local/bin/guestbook.data/view_guestbook.py

elif [ "$option" == "save" ]; then
  python /usr/local/bin/guestbook.data/save_guestbook.py

elif [ "$option" == "erase" ]; then
  python /usr/local/bin/guestbook.data/erase_guestbook.py

else
  echo "Sorry, I didn't understand that." 

fi
Run Code Online (Sandbox Code Playgroud)


PP.*_*PP. 4

在 bash 脚本中$1, 是第一个参数,$2是第二个参数,依此类推。

例如,如果您有以下内容test.sh

#!/bin/sh
echo You said \"$1\"
Run Code Online (Sandbox Code Playgroud)

然后你会得到以下信息:

user@host:~$ test.sh hello
You said "hello"
Run Code Online (Sandbox Code Playgroud)