bash编程之交互编程
read -p "prompt" -t timeout
例如:输入用户名,可返回其shell #!/bin/bash # read -p "Plz input a username: " userName
if id $userName &> /dev/null; then echo "The shell of $userName is `grep "^$userName\>" /etc/passwd | cut -d: -f7`." else echo "No such user. stupid." fi
例子:显示一个如下菜单给用户: cpu) show cpu infomation mem) show memory infomation *) quit
1、如果用户选择了cpu,则显示/proc/cpuinfo文件的内容; 2、如果用户选择了mem,则显示/proc/meminfo文件的内容; 3、退出
#!/bin/bash # echo "---------menu----------" echo "cpu) show cpu infomation" echo "mem) show memory infomation" echo "*) quit" echo "-------menu------------"
read -p "Plz give your choice: " choice
if [ "$choice" == 'cpu' ]; then cat /proc/cpuinfo elif [ "$choice" == 'mem' ]; then cat /proc/meminfo else echo "Quit" exit 3 fi
#!/bin/bash # cat << EOF -------menu------------ cpu) show cpu infomation mem) show memory infomation *) quit -------menu------------ EOF
read -p "Plz give your choice: " choice
if [ "$choice" == 'cpu' ]; then cat /proc/cpuinfo elif [ "$choice" == 'mem' ]; then cat /proc/meminfo else echo "Quit" exit 3 fi
字串测试中的模式匹配 [[ "$var" =~ PATTERN ]]
例如:让用户给定一个用户名,判断其是否拥有可登录shell; /bin/sh, /bin/bash, /bin/zsh, /bin/tcsh, /sbin/nologin, /sbin/shutdown
#!/bin/bash # read -p "Plz input a username: " userName userInfo=`grep "^$userName\>" /etc/passwd`
if [[ "$userInfo" =~ /bin/.*sh$ ]]; then echo "can login" else echo "cannot login" fi
练习:写一个脚本,完成如下功能 使用格式: script.sh /path/to/somefile
1、可接受一个文件路径参数: 如果此文件不存在,则创建之,则自动为其生成前n行类似如下: #!/bin/bash # description: # version: # date: # author: mageedu # license: GPL 而后使用vim打开此文件,并让光标处在最后一行的行首 如果文件存在、且是bash脚本,则使用vim打开之,光标自动处行最后一行的行首; 否则,退出;
如果正常编辑保存, 判断,如果文件没有执行权限,则添加之;
判断,其是否有语法错误,如果有,提示;