繁体   English   中英

BASH tr命令

[英]BASH tr command

我喜欢将其转换为大写,以便进行格式化,因此它将遵循未来的case语句。 我认为案例陈述是区分大小写的。

我看到tr命令与echo命令一起使用的所有地方为你提供了立即的结果,例如:

echo "Enter in Location (i.e. SDD-134)"
read answer (user enters "cfg"

echo $answer | tr '[:lower:]' '[:upper:]'   which produced

cfg # first echo not upper?

echo $answer #echo it again and it is now upper...

CFG

此版本不需要bash,但使用管道:

read -p "Enter in Location (i.e. SDD-134) " answer
answer=$(echo "$answer" | tr '[:lower:]' '[:upper:]')
echo "$answer"

如果您正在使用bash并且不关心可移植性,则可以使用以下内容替换第二行:

answer="${answer^^}"

有关详细信息,请查看bash手册页的“参数扩展”部分。

通过tr回显变量将输出值,它不会改变变量的值:

answer='cfg'
echo $answer | tr '[:lower:]' '[:upper:]'
# outputs uppercase but $answer is still lowercase

如果要稍后引用该变量,则需要重新分配该变量:

answer='cfg'
answer=$(echo $answer | tr '[:lower:]' '[:upper:]')
echo $answer
# $answer is now uppercase

bash版本4或更高版本中:

answer=${answer^^*}

目前尚不清楚你在问什么,但如果你试图将用户输入转换为大写,只需:

sed 1q | tr '[:lower:]' '[:upper:]' | read answer

在没有在子shell中运行读取的shell(例如zsh)中,这将直接起作用。 要在bash中执行此操作,您需要执行以下操作:

printf "Enter in Location (i.e. SDD-134): "
sed 1q | tr '[:lower:]' '[:upper:]' | { read answer; echo $answer; }

子shell关闭后, answer是一个未设置的变量。

大写变量的好的和清晰的方法是

$var=`echo $var|tr '[:lower:]' '[:upper:]'`

注意Bene的背引号

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM