$TEXTの最初の2文字を印刷したいです。

$TEXTの最初の2文字を印刷したいです。

私は私が入力したテキストの後にそのテキストの最初の2文字を印刷するプログラムが欲しいです。これを行う方法はありますか?

#!/bin/bash
#
# Get text from user repeatedly
#
echo "Type away..."
while read TEXT
do
    echo You typed $TEXT
    if [ "$TEXT" = "quit" ] || [ "$TEXT" = "q" ] || [ "$TEXT" = "Q" ] || [ "$TEXT" = "QUIT" ]; then
        echo So I quit!
        exit 0
    fi
done

echo "HELP!"

答え1

最初の文字をどこで取得できるかなどの表記法を使用できます${var:0:N}変わりやすい変数名です。窒素必要な文字数です。したがって、あなたの質問について${TEXT:0:2}TEXT。例:

TEXT="Some text"
echo "\$TEXT: '$TEXT', first 2 chars: '${TEXT:0:2}'"

出力:

$TEXT: 'Some text', first 2 chars: 'So'  

Linux文書化プロジェクトという章があります。「文字列操作」。 「サブストリングの抽出」セクションには、この表記の詳細があります。

答え2

一般的なアイデアを提供するために。あなたの場合はcase...設定を使用できますesac。ここに示す例

#!/usr/bin/env bash

call_for_help()
{
  echo "Please help!" >&2
}

if (($# < 1)); then
  call_for_help
fi

while read -rp "Type away: " TEXT; 
do
  echo "${TEXT:0:2}"
  case "$TEXT" in
   [qQ] | [Qq]uit)
      echo "You quited"
      exit 1
      ;;
  esac
done

関連情報