私は私が入力したテキストの後にそのテキストの最初の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