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 "小文字" ;; [[:upper:]]) echo "大文字" ;; [0-9] ) echo "数字";; * ) echo "特殊文字";; エサック

4

2 に答える 2

2

私はあなたにいくつかのアドバイスがあります...

  • ash または dash をインストールするのがおそらく最善です。これらのシェルは、Posix で標準化されたシェル構文に対応しています。主な利点は、man ページがよりシンプルで読みやすくなることです。マニュアルページもオンラインで見つけることができます。Posix である bash の重要なサブセットについて説明します。

  • シェル条件を評価する方法は 2 つあります。1 つはif ... fi、もう 1 つは ですcase ... esac。ただし、このifステートメントは式を評価するのではなく、パイプラインコマンドを評価します。したがって、通常、test式を評価し、エイリアスが付けられたコマンドを実行し[ます。


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

if grep pattern file; then
  echo another success
fi

  • は構文[ ... ]はないことに注意してください。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

Regular expression

于 2013-04-18T18:27:11.987 に答える