shell处理字符串记录

 #!bin/sh
#时间
dat=`date '+%Y%m%d'`;

#恢复./下的程序
for i in `find ./* -name *.$dat`
  do
len=`expr length $i`;
newlen=`expr $len - 9`;
newstr=`expr substr $i 1 $newlen`;
  echo $newstr;

   if test -f $i.$dat;then
 cp $i  $newstr;

  fi
  done

在 Linux shell 脚本中进行字符串拼接是一项常见操作,可以通过直接使用变量和字符串连接符来完成。例如,可以将两个变量或字符串常量直接拼接在一起,也可以通过命令替换或表达式进行拼接。 ### 基本字符串拼接 最简单的拼接方式是将多个字符串或变量直接写在一起,由 shell 自动进行连接。例如: ```bash str1="Hello" str2="World" result="$str1$str2" echo "$result" ``` 该脚本将输出 `HelloWorld`,其中变量 `str1` 和 `str2` 被拼接在一起。这种方式适用于大多数基础的字符串操作需求。 ### 带分隔符的拼接 如果需要在拼接过程中添加空格、下划线或其他字符作为分隔符,可以在变量之间直接插入这些字符: ```bash str1="Hello" str2="World" result="$str1_$str2" echo "$result" ``` 该脚本将输出 `Hello_World`。这种拼接方式在构造文件名、日志信息或路径时非常实用。 ### 使用命令替换进行拼接 可以借助命令替换功能将命令执行结果嵌入字符串中,例如: ```bash date=$(date +%Y%m%d) filename="report_$date.txt" echo "$filename" ``` 该脚本将输出类似 `report_20231015.txt` 的文件名,其中 `$(date +%Y%m%d)` 用于获取当前日期并将其插入字符串中。这种方法在自动化脚本中广泛用于动态生成文件名或日志记录内容。 ### 字符串拼接与变量作用域 在函数或脚本内部进行字符串拼接时,需注意变量的作用域问题。例如,在函数中拼接字符串并修改全局变量时,应确保变量在函数外部可见: ```bash prefix="user_" func() { suffix="123" global_var="$prefix$suffix" } func echo "$global_var" ``` 该脚本将输出 `user_123`,其中 `global_var` 是在函数内部拼接并赋值的全局变量。这种操作方式在构建复杂脚本逻辑时尤为重要。 ### 使用环境变量进行拼接 环境变量也可以参与字符串拼接,例如将 `PATH` 变量与新的路径拼接: ```bash export PATH="$PATH:/new/path" ``` 此操作将 `/new/path` 添加到 `PATH` 环境变量中,使得系统在查找可执行文件时包含新路径。这种方式常用于配置开发环境或添加自定义工具路径[^4]。 ### 使用 `awk` 拼接字符串 在 `awk` 中也可以进行字符串拼接,例如将多个字段拼接成一个新的字符串: ```bash echo "John Doe" | awk '{print $1 " " $2}' ``` 该命令将输出 `John Doe`,其中 `$1` 和 `$2` 分别代表输入的两个字段,并通过空格进行拼接。这种操作在处理日志文件或结构化文本时非常有用[^3]。 ### 使用 `tr` 或 `sed` 进行拼接辅助 虽然 `tr` 和 `sed` 主要用于字符替换和文本处理,但它们也可以作为拼接操作的辅助工具。例如,使用 `sed` 在字符串前后添加内容: ```bash echo "content" | sed 's/^/prefix_/' | sed 's/$/_suffix/' ``` 该命令将输出 `prefix_content_suffix`,其中 `^` 表示行首,`$` 表示行尾。这种操作方式适用于批量修改文件内容或日志信息。 ### 相关问题 1. 如何在 Linux shell 中使用命令替换构造动态字符串? 2. 如何在 shell 脚本中拼接路径字符串? 3. 如何在 awk 中进行字符串拼接? 4. 如何在 shell 函数中修改全局变量并进行字符串拼接? 5. 如何使用 sed 在字符串前后添加固定内容?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值