shell脚本中大括号的扩展在变量中的问题

[email protected]:/tmp/test# touch /tmp/test/{2,3}

[email protected]:/tmp/test# ls

2  3

[email protected]:/tmp/test# rm /tmp/test/{2,3}

[email protected]:/tmp/test# ls

[email protected]:/tmp/test# t={2,3}

[email protected]:/tmp/test# touch /tmp/test/$t

[email protected]:/tmp/test# ls

{2,3}

解决办法:

[email protected]ubuntu:/tmp/test# eval touch /tmp/test/$t

[email protected]:/tmp/test# ls

2  3

时间: 2024-08-01 22:45:03

shell脚本中大括号的扩展在变量中的问题的相关文章

shell脚本:批量修改文件名(删除文件名中字符)

shell脚本:批量修改文件名(文件名中添加字符) 上一篇写过批量修改文件名(文件名中添加字符),工作中还存在这样的需求,批量修改文件名,删除文件名中的某些字符: 举例如下:批量改名,删除文件名中多余字符 目录下文件名为如下,要求去掉_finished. stu_102999_1_finished.jpg stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg stu_102999_5_finis

shell脚本基础进阶(二)----变量及运算符

变量及运算符 变量 变量,即可变化的量,实质是定义一段内存空间,这段空间可以存取任意符合定义的数据类型的数据. 一.bash变量命名: 1.只能包含字母.数字和下划线,并且不能以数字开头 2.不应该跟系统中已有的环境变量重名 3.最好能见名知意 二.bash变量分类: 1.本地变量:只在当前shell进程中有意义 2.环境变量:当前shell进程及子进程中有意义 3.局部变量:某个函数执行过程中有意义 4.位置参数变量:在脚本中引用传递给脚本的参数: 扩展:在shell中,一行命令行中,命令被自

shell脚本结构、date命令、变量

20.5 Shell脚本中的逻辑判断 逻辑表达式 在[ ]中括号中: -lt:=little than 小于-le:=little && equal 小于等于-eq:=equal 等于-ne:=no equal 不等于-gt:=greater than 大于-ge:=greater && equal 大于等于在(( ))小括号中:<,<=,==,!=,>,>= 注意: 使用双括号括起来 格式1 if 条件 :then commond:fi eg: #

ubuntu 用shell脚本实现将当前目录下所有目录中的某一类文件拷贝到同一目录下

当前目录下有一些文件和目录,其中每个目录里都有若干.txt文件, 现在要求在当前目录创建一个新目录all,且将那些目录所有.txt文件 都拷贝到目录all.在ubuntu12.04的shell脚本实现如下: #!/bin/sh # 提示信息 echo "start:" # 定义变量 dst=all pst=.txt # 复制文件到目标文件夹 if [ -d ${dst} ] then echo "${dst} existed" else echo "mkd

shell脚本--在带本月日期的文件中搜索包含某个关键字,并返回含有关键字的文件

因为工作中每天都需要根据某个关键字,在包含每天日期的一批文件中搜索某个关键字,找出这批文件中包含关键字的文件,并返回文件名.本程序涉及:find命令,date命令,if循环,$符号的意义(本程序涉及在bash脚本和命令行中意义) 脚本名为h.sh,脚本运行:例如:我们想搜索jack在不在本月的黑名单中,就这样执行脚本:sh h.sh jack, # cat h.sh 1 #!/bin/sh 2 sdate=`date +%Y%m` 3 dir=`find ./ -name "BLACKLIST_

转载:shell脚本之sed使用----替换、变量、转义字符

sed替换的基本语法为:----s后面跟的是分隔符,原字符串可使用.*这种正则表达式进行整行替换 代码如下: sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线"\"进行转义,但是单引号"'"是没有办法用反斜线"\"转义的,这时候只要把命令中的单引号改为双引号就行了,例如: 代码如下: sed "s/原字符串包含'/替换字符串包含'/" //要处理的字符包含单引号

shell脚本之sed使用----替换、变量、转义字符

sed替换的基本语法为: ----s后面跟的是分隔符,原字符串可使用.*这种正则表达式进行整行替换 sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线"\"进行转义,但是单引号"'"是没有办法用反斜线"\"转义的,这时候只要把命令中的单引号改为双引号就行了,例如: sed "s/原字符串包含'/替换字符串包含'/" //要处理的字符包含单引号 命令中的三根斜线分隔符

shell脚本学习-语法篇

一. 条件测试:test [命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测 试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反). 二.if/then/elif/else/fi和C语言类似,在Shell中用if.then.elif.else.fi这几条命令实现分支控制.这种流程控制语句本质上也是由若干条Shell命令组成的,其实是三条命令,if [ -f ~/.bashrc ]是第一条,then . ~/.ba

shell脚本 入门 —— 符号篇

shell Shell就是一个命令行解释器,它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive). Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一 个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条地敲 命令.Shell脚本和编程语言很相似,也有变量和流程控制语句,包括循环和分支.但Shell脚本是解释执行的,不需 要编译,Shell程序从脚本中一行一行读取