shell中感叹号与引号用法

本文介绍了解决在使用curl命令时遇到的问题,即如何正确处理URL中的特殊字符“!”导致的命令执行失败。通过实验发现,直接使用或尝试转义此字符都无法解决问题,最终采用双引号结合反斜杠的方式成功解决了这一难题。

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

线上环境需要定期清理缓存,如下:

[root@LB scripts]# curl http://10.238.74.31/irm/manualDataSyncPage!synchronizeCrmGroupCustomerInfo.html?UserName=004&Password=ZHzg-123   

-bash: !synchronizeCrmGroupCustomerInfo.html?UserName=004: event not found

  “!”在日常命令中可以作为调用history历史记录来使用执行某行内容,在shell里为特殊字符。

在执行curl "http://10.238.74.31/irm/manualDataSyncPage!synchronizeCrmGroupCustomerInfo.html?UserName=004&Password=ZHzg-123"的过程中,发现“!”无法被正常解析,加上转义反斜杠“\”也没用。

[root@LB scripts]# curl http://10.238.74.31/irm/manualDataSyncPage\!synchronizeCrmGroupCustomerInfo.html?UserName=004&Password=ZHzg-123

-bash: !event not found

   后发现在“!”前后加入空格可以解决这个问题,但还不够完美,因为输入的文件字符也是加了空格后的,感觉占用较长地方,现象如下:

[root@LB scripts]# curl "http://10.238.74.31/irm/manualDataSyncPage ! synchronizeCrmGroupCustomerInfo.htmlme=004&Password=ZHzg-123"

   最后尝试双引号与反斜杠同时使用,完美解决问题!具体如下:

[root@LB scripts]# curl "http://10.238.74.31/irm/manualDataSyncPage"\!"syncronizeCrmGroupCustomerInfo.html?UserName=004&Password=ZHzg-123" 

<html>

<head>

<title>system.title</title>

<script>

var hexA0s = unescape(' %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0 %A0');

hexA0s = hexA0s + hexA0s + hexA0s + hexA0s;

hexA0s = hexA0s + hexA0s + hexA0s + hexA0s;

hexA0s = hexA0s + hexA0s + hexA0s + hexA0s;

document.title = 'system.title' + hexA0s + hexA0s;

hexA0s = null;

</script>

<meta http-equiv="Pragma" Content="No-cach"></meta>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></meta>



本文转自 linuxzkq 51CTO博客,原文链接:http://blog.51cto.com/linuxzkq/1827401

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值