Shell反向打印出字符串

本文介绍了一个使用Shell脚本实现的功能,即反向打印输出字符串。通过简单的循环和字符串操作,展示了如何在命令行环境中进行有趣的文本处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/bin/bash
#-*- coding:utf-8 -*-
#:set ff=unix
#:set nobomb
######################################################################
## Filename: print.sh
##
## Copyright (C) 2014.7
## Author: TangMeiHao@760209035@qq.com
##
## Description: Shell反向打印输出字符串
##
######################################################################
String="$1"
for ((i=${#String};i>=0;i--)) ##注意:去字符串长度是"${#String}",取数组长度“${#String[*]}”
do
echo -n "${String:i:1}" ##-n就是回车之后不换行
done


测试:bash print.sh "meihao"
oahiem
<think>我们被要求回答关于Shell中空字符串的处理和判断方式。根据引用内容,我们可以总结几种判断字符串为空的方法,并注意一些常见陷阱。核心方法:1.使用`-z`选项:判断字符串长度是否为02.使用等号判断:`["$str"=""]`或`[x"$str"=x]`3.使用双中括号避免错误:`[[-z"$str"]]`同时,我们需要注意:-变量引用必须加双引号,避免变量未定义或包含空格时错。-避免使用单中括号可能带来的问题,推荐使用双中括号。此外,引用[5]展示了一个有趣的例子:当字符串为"0"或"00"时,使用数字比较(-eq)会将其视为0(即空),但这不是字符串空判断,而是数值判断。因此,在判断空字符串时,应避免使用数值比较运算符。下面我们整理详细的判断方法,并给示例。</think>### Shell 中空字符串的处理与判断方法 在 Shell 脚本中,正确处理空字符串至关重要,以下是核心方法和注意事项(基于引用内容总结): --- #### **一、判断空字符串的 4 种可靠方法** 1. **`-z` 运算符**(推荐) ```bash if [[ -z "$str" ]]; then echo "字符串为空" fi ``` - **原理**:检查字符串长度是否为 0 - **注意**:必须用双引号包裹变量 `"$str"`,否则未定义的变量会报错[^1][^2][^4] 2. **显式空值比较** ```bash if [[ "$str" = "" ]]; then echo "字符串为空" fi ``` 3. **防空格干扰的 x 模式** ```bash if [[ x"$str" = x ]]; then echo "字符串为空" fi ``` - **优势**:避免变量含空格或特殊字符时误判[^2][^3] 4. **`-n` 判断非空**(反向验证) ```bash if [[ -n "$str" ]]; then echo "字符串非空" else echo "字符串为空" fi ``` --- #### **二、必须避免的 3 个陷阱** 1. **遗漏双引号导致错误** ```bash # 错误!若 $str 未定义会报错 if [ -z $str ]; then ... ``` **正确写法**:始终使用 `"$str"`[^2][^3][^4] 2. **混淆数值 0 与空字符串** ```bash str="0" [[ $str -eq 0 ]] # 返回 true(数值判断) [[ -z "$str" ]] # 返回 false(字符串判断) ``` - 数值比较 `-eq` 会将 `"0"`、`"00"` 视为 0,与空字符串行为不同[^5] 3. **使用单中括号 `[ ]` 的隐患** ```bash str=" * " [ -z $str ] # 可能误判(展开为通配符) [[ -z "$str" ]] # 安全(双中括号不展开通配符) ``` **建议**:优先使用 `[[ ]]` 避免意外行为[^2][^4] --- #### **三、空字符串处理技巧** 1. **设置默认值**(变量为空时) ```bash echo ${name:-"默认用户"} # 若 $name 为空则输"默认用户" ``` 2. **删除首尾空格后判空** ```bash trimmed=$(echo "$str" | xargs) # 删除首尾空格 if [[ -z "$trimmed" ]]; then ... ``` 3. **长度计算验证** ```bash len=$(echo -n "$str" | wc -c) # -n 去除换行符 if (( len == 0 )); then ... ``` > **关键总结**: > - 始终用 `"$var"` 包裹变量 > - 优先使用 `[[ -z "$var" ]]` 或 `[[ "$var" = "" ]]` > - 避免数值比较运算符(如 `-eq`)处理字符串[^5] --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值