sed -i 's|from_infura_hex=?|from_infura_hex=$(curl -s -X POST --connect-timeout 5 -H "Content-Type: application/json" --data \'{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}\' https://ropsten.infura.io/X/X | jq .result | xargs)|' /home/ec2-user/LastBlockNode.sh
我尝试执行此命令,但总是收到此错误:
-bash:意外令牌')'附近的语法错误
该命令的目的是from_infura_hex=?
通过curl命令修改脚本LastBlockNode.sh中的值。
谁能帮忙这个sed命令?
|
作为s
命令的定界符,则该字符不应以图案或替换形式出现而不进行转义。当您|
在命令中用作管道时,最好选择其他字符,例如#
。sed -i '/pattern/'"$(command)"'/'
而不是sed -i '/pattern/$(command)/'
。那请您尝试以下方法:
sed -i 's#from_infura_hex=?#from_infura_hex='"$(curl -s -X POST --connect-timeout 5 -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":
\"eth_blockNumber\",\"params\":[],\"id\":1}" https://ropsten.infura.io/X/X | jq .result | xargs)"'#' /home/ec2-user/LastBlockNode.sh
但是将命令分成多行将更安全并且更易读:
replacement="$(curl -s -X POST --connect-timeout 5 -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' https://ropsten.infura.io/X/X | jq .result | xargs)"
sed -i 's#from_infura_hex=?#from_infura_hex='"$replacement"'#' /home/ec2-user/LastBlockNode.sh
请注意,我没有用实际数据测试过上面的命令。如果它们中的任何一个仍然不起作用,请通过错误消息通知我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句