0

我在这里有一些时间处理我的脚本

  1. 脚本从键盘读取字符。
  2. 根据字符的类型,脚本会显示以下消息之一

大写字母 小写字母 数字 特殊字符。

#!/bin/bash
echo 'Enter single character:'
read $1
if $1 = "A-Z"
then
  echo 'Uppercase letter'
fi

if $1 = "a-z"
then
  echo 'Lowercase letter'
fi

if $1 = [ ! @ $ ^ & * ~ ? . | / [ ] < > \ ` " ;# ( )]
then
  echo 'Special character'
fi

虽然它不能正常工作。

这是简短的工作:

#!/bin/bash echo "Enter single character:" read input_source case "$input_source" in [[:lower:]]) echo "Lowercase letter" ;; [[:upper:]]) echo "大写字母" ;; [0-9] ) 回显“数字”;; * ) echo "特殊字符";; 经社理事会

4

2 回答 2

2

我确实有一些建议给你...

  • 最好安装灰烬或破折号。这些 shell 对应于 Posix 标准化的 shell 语法。它们对您的主要优势是:手册页将更简单、更易于阅读。您也可以在线找到手册页。它描述了 bash 的重要子集,即 Posix。

  • 有两种评估 shell 条件的方法。一个是if ... fi,另一个是case ... esac。但是该if语句不评估表达式,它评估管道命令。因此,通常会运行该test命令,该命令会计算表达式,并且别名为[.


if [ 1 -eq 1 ]; then
  echo success
else
  echo failure
fi

if grep pattern file; then
  echo another success
fi

  • 注意[ ... ]is 不是语法,它只是说的缩写if test ...; then

  • case ... esac语句将进行模式匹配。

于 2013-04-18T18:07:29.217 回答
2
usage ()
{
  echo usage: $0 CHAR
  exit
}

[[ $1 ]] || usage

if [[ $1 =~ [[:upper:]] ]]
then
  echo 'uppercase letter'
elif [[ $1 =~ [[:lower:]] ]]
then
  echo 'lowercase letter'
elif [[ $1 =~ [[:punct:]] ]]
then
  echo 'special character'
fi

正则表达式

于 2013-04-18T18:27:11.987 回答