关于shell脚本shell 脚本 特殊符号号的的疑问

现在位置:
阅读 2,420 次
阅读 2,823 次
阅读 2,523 次
阅读 2,941 次新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分16阅读权限10帖子精华可用积分16 信誉积分98 专家积分0 在线时间43 小时注册时间最后登录
白手起家, 积分 16, 距离下一级还需 184 积分
帖子主题精华可用积分16 信誉积分98 专家积分0 在线时间43 小时注册时间最后登录
论坛徽章:0
应用场景很简单
就是想做个crontab的web配置界面
从数据库取回字符串
例如:#/bin/bash
cron=&*|*/1|*|*|*&
OLD_IFS=&$IFS&
array=($cron)
IFS=&$OLD_IFS&
echo &${array[0]}&复制代码这样子的话,会将本地目录中的文件名输出
cron=&\*|*/1|\*|\*|\*&
这样可以输出
当然,也就是shell先处理取回的字符串,查找特殊字符,然后添加转义&\&
但是输出的数组元素里面 为 \*这种的
请问,还有其他办法么
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID467748空间积分0 积分40596阅读权限100帖子精华可用积分40596 信誉积分4674 专家积分620 在线时间10461 小时注册时间最后登录
帖子主题精华可用积分40596 信誉积分4674 专家积分620 在线时间10461 小时注册时间最后登录
认证徽章论坛徽章:2
=GNU/linux=
GNU {bash 2.05b, grep 2.5, Awk 3.1.3, sed 4.0.8}
导师说:站起来吧
众人说:那么辛苦那么艰苦到底值不值?
设计师说:富起来吧
众人说:拼啦
UID空间积分0 积分16阅读权限10帖子精华可用积分16 信誉积分98 专家积分0 在线时间43 小时注册时间最后登录
白手起家, 积分 16, 距离下一级还需 184 积分
帖子主题精华可用积分16 信誉积分98 专家积分0 在线时间43 小时注册时间最后登录
论坛徽章:0
在我的这里面这样子使用
在脚本使用特殊符号之前加
然后就可以原样输出了
其他的问题
待我后续添加
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处您现在的位置: &&&&&&&&&&&&文章内容
快捷导航:
shell脚本中一些特殊符号
来源:考试大&&&【考试大:学子希望之家!】&&日
  4、'string'单引号和"string"双引号
  双引号:如果想在定义的变量中加入空格,就必须使用单引号或双引号,
  单、双引号的区别在于双引号转义特殊字符而单引号不转义特殊字符
  eg: $ heyyou=home
  $ echo '$heyyou'
  $ $heyyou($没有转义)
  eg: $ heyyou=home
  $ echo "$heyyou"
  $ home (很明显,$转义了输出了heyyou变量的值)
  5、$#它的作用是告诉你引用变量的总数量是多少;
  $$它的作用是告诉你shell脚本的进程号;
  $* 以一个单字符串显示所有的脚本传递的参数。等价于$1 $2 $3.......;$@ 与$*基本类似(参见序号7),但在数组赋值时有些不同;$? 前一个命令的退出码;
  $-显示shell使用的当前选项;
  $! 最后一个后台运行的进程ID号。
  6、$((...))语法:对括号内的表达式求值
  #!/bin/sh
  hile [ "$x" -ne 10 ];do
  echo $x
  x=$(($x+1))
  exit 0
  7、shell中几种特殊的参数变量的引用
  $1、$2、$3……${10}、${11}、${12}…… :表示脚本传入的的各个参数,注意当需表示两位数以后的参数时数字要用花括号括起。
  $@ 列出所有的参数,各参数用空格隔开$*: 列出所有的参数,各参数用环境变量IFS的第一个字符隔开
  8、命令列表:
  AND列表statement1 && statement2 && statement3 &&…:只有在前面所有的命令都执行成功的情况下才执行后一条命令
  OR列表 statement1 || statement2 || statement3 || …:允许执行一系列命令直到有一条命令成功为止,其后所有命令将不再被执行eg:#!/bin/sh
  touch file_one
  rm -f file_two
来源:考试大-
责编:zj&&&
王悦20¥200¥100杨海虹20¥200¥100杨海虹20¥200¥100杨海虹20¥200¥100王悦20¥200¥100
暂无跟贴,欢迎您发表意见
考试大Linux认证考试评论排行
1.&&评论5条
2.&&评论2条
3.&&评论2条
4.&&评论1条
5.&&评论1条
6.&&评论1条
主讲:杨海虹
12345678910
12345678910
12345678910新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID空间积分0 积分62阅读权限10帖子精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
白手起家, 积分 62, 距离下一级还需 138 积分
帖子主题精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
论坛徽章:0
在solaris系统中,要筛选数组中关键字,每个关键字后面都有一个%如果能够在sed中匹配上
grep -i &C${CV[$i]}&&&| eval &sed 's/.*&C\${CV[$i]}%&//g'&
CV是个数组
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分497阅读权限20帖子精华可用积分497 信誉积分128 专家积分0 在线时间264 小时注册时间最后登录
稍有积蓄, 积分 497, 距离下一级还需 3 积分
帖子主题精华可用积分497 信誉积分128 专家积分0 在线时间264 小时注册时间最后登录
论坛徽章:0
楼主要干嘛呢?匹配 % & && &这些字符吗?
可以直接匹配啊,
还是我没有理解楼主的意思?[root@bill test2]# echo &% & &&|sed 's/%/1/;s/&/2/;s/&/3/'
1 2 3复制代码如果要匹配&&/&&的话,转义一下就可以,或者用sed 's###'也可以
UID空间积分0 积分62阅读权限10帖子精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
白手起家, 积分 62, 距离下一级还需 138 积分
帖子主题精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
论坛徽章:0
& & 不好意思没说清楚,如果单独用sed命令是可以的,我的问题是把这样的命令放到脚本里,把sed中的关键字设置成变量后,就无法筛选出来了。
& &问题:我怀疑在脚本中一些特殊字符是不是不支持特别是&和&,使用\转译也不好用。
UID空间积分0 积分3948阅读权限100帖子精华可用积分3948 信誉积分2635 专家积分15 在线时间3935 小时注册时间最后登录
帖子主题精华可用积分3948 信誉积分2635 专家积分15 在线时间3935 小时注册时间最后登录
论坛徽章:3
楼主是这个意思吧?[root@localhost /test]# a=xxx
[root@localhost /test]# echo abc | sed 's/b/'$a'/'
axxxc复制代码
UID空间积分0 积分497阅读权限20帖子精华可用积分497 信誉积分128 专家积分0 在线时间264 小时注册时间最后登录
稍有积蓄, 积分 497, 距离下一级还需 3 积分
帖子主题精华可用积分497 信誉积分128 专家积分0 在线时间264 小时注册时间最后登录
论坛徽章:0
这样?[root@bill cu]# cat a2.sh
#!/bin/bash
echo &% & &&|sed &s/$1/1/g;s/$2/2/;s/$3/3/&
[root@bill cu]# sh a2.sh % \& \&
1 2 3复制代码
UID空间积分0 积分62阅读权限10帖子精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
白手起家, 积分 62, 距离下一级还需 138 积分
帖子主题精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
论坛徽章:0
本帖最后由 situxiaoquan1 于
18:53 编辑
文件内容file.txt:
&OrigDomain&PIMM&/OrigDomain&& & &HomeDomain&BOSS&/HomeDomain&& & &BIPCode&BIP2B110&/BIPCode&& & &BIPVer&0100&/BIPVer&& & &ActivityCode&T2001122&/ActivityCode&& & &ActionCode&0&/ActionCode&& & &Routing&& && &&&&RouteType&01&/RouteType&& && &&&&RouteValue&&/RouteValue&& & &/Routing&& & &ProcID&&/ProcID&& & &TransIDO&&/TransIDO&& & &ProcessTime&05&/ProcessTime&& & &TestFlag&0&/TestFlag&& & &MsgSender&0005&/MsgSender&& & &MsgReceiver&0000&/MsgReceiver&& & &SvcContVer&0100&/SvcContVer&
在以上文件中帅选出类似&OrigDomain&&/OrigDomain& 和&HomeDomain&&/HomeDomain&之间的内容,把每个字段当作变量$i
#!/bin/bash
cat file.txt |grep &&$i&& |sed 's/.*&$i&//g'|awk -F'&' '{print $1}'
单独执行以下
grep &&BIPCode&& bosslog.txt | sed 's/.*&BIPCode&//g'|awk -F'&' '{print $1}'
执行脚本时无法识别&和&,使用\将其注释也无法帅选&BIPCode& ,如何能够匹配尖括号呢?
我是在solaris系统下运行的
UID空间积分860 积分46829阅读权限100帖子精华可用积分46829 信誉积分3100 专家积分105 在线时间11895 小时注册时间最后登录
帖子主题精华可用积分46829 信誉积分3100 专家积分105 在线时间11895 小时注册时间最后登录
认证徽章论坛徽章:68
situxiaoquan1
cat file.txt |grep &&$i&& |sed &s/.*&$i&//g&|awk -F'&' '{print $1}'
【图书免费赠送】
【Windows批处理】
UID空间积分0 积分105阅读权限10帖子精华可用积分105 信誉积分120 专家积分0 在线时间90 小时注册时间最后登录
白手起家, 积分 105, 距离下一级还需 95 积分
帖子主题精华可用积分105 信誉积分120 专家积分0 在线时间90 小时注册时间最后登录
论坛徽章:0
& & 用“”&&,$i 才可以展开·~~~
asm c/c++ unix shell ...
谦虚礼貌 脚踏实地 努力加油!
ps:新人 , 伤不起, 待腾飞的菜鸟~
UID空间积分0 积分62阅读权限10帖子精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
白手起家, 积分 62, 距离下一级还需 138 积分
帖子主题精华可用积分62 信誉积分100 专家积分0 在线时间234 小时注册时间最后登录
论坛徽章:0
脚本里的这句话
&lt1.txt& | grep -i &${CV[$i]}& | eval &sed 's/.*&(&\&${CV[$i]}&)&//g'&'& & (lt1.txt内容文件 CV数组 i变量)
& & 执行后提示syntax error near unexpected token `'s/.*&(&'
& & 如果能让脚本里的这句话识别“&”使用/转译也不行
UID空间积分860 积分46829阅读权限100帖子精华可用积分46829 信誉积分3100 专家积分105 在线时间11895 小时注册时间最后登录
帖子主题精华可用积分46829 信誉积分3100 专家积分105 在线时间11895 小时注册时间最后登录
认证徽章论坛徽章:68
situxiaoquan1
能否说说文件内容和你想得到的结果?又是数组又是eval的,什么情况,这么复杂?
【图书免费赠送】
【Windows批处理】
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处1. 使用&符号在后台执行命令
你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:.
$ ./my-shell-script.sh &
2. 使用nohup在后台执行命令
使用&符号在后台执行命令或脚本后,如果你退出登录,这个命令就会被自动终止掉。要避免这种情况,你可以使用nohup命令,如下所示:
$ nohup ./my-shell-script.sh &
3. 使用screen执行命令
通过nohup和&符号在后台执行命令后,即使你退出登录,这个命令也会一直执行。但是,你无法重新连接到这个会话,要想重新连接到这个会话,你可以使用screen命令。.
Linux的screen命令提供了分离和重新连接一个会话的功能。当你重新连接这个会话的时候,你的终端和你分离的时候一模一样。
4. 使用at将一个命令作为批处理执行
使用at命令,你可以让一个命令在指定的日期和时间运行,例如要在明天上午10点在后台执行备份脚本,执行下面的命令:
$ at -f backup.sh 10 am tomorrow
在批处理模式下执行某些任务需要启用一些选项。下面的文章会给出详细解释:.
5. 使用watch连续地执行一个命令
要想按一个固定的间隔不停地执行一个命令,可以使用watch命令,如下所示:
$ watch df -h

我要回帖

更多关于 shell脚本实例 的文章

 

随机推荐