我希望我的程序打印出我输入的文本,后跟该文本的前两个字符。有什么办法可以做到这一点吗?
#!/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