我希望打印 $TEXT 中的前两个字符

我希望打印 $TEXT 中的前两个字符

我希望我的程序打印出我输入的文本,后跟该文本的前两个字符。有什么办法可以做到这一点吗?

#!/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

您可以使用像where这样的符号来获取第一个字符${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

相关内容