基本上,您通过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)
在 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)