#!/bin/bash
#$@与$*没有被双引号包围时效果一样,每个参数都是独立的。但是$*被双引号包围时,会将所有参数看作一个整体。
echo "\$@和\$*没有被双引号包围时,每个参数依然是独立的"for i in"$@";doecho "\$@ $i"
donefor i in $*;do echo "\$* $i"
doneecho "\$*被双引号包围时,会将所有参数看作一个整体。"for i in"$*";do echo "\"\$*\" $i"
done#脚本的执行名字
echo "\$0 NAME: $0"
#执行这个脚本的PID
echo "\$$ PID: $$"...
引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(’‘),双引号(“”)。 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要用于信息的原样输出,防止任何变量的扩展,双引号(软转义)允许变量扩展、转义符和命令替换。单引号保护双引号,双引号保护单引号。1. 反斜杠 反斜杠通过解析器将1个字符转化为引用符号或转义。 1)在单引号内...
在编写shell脚本的时候经常会用到引号,有些时候却老是忘记单引号和双引号之间的区别,
所以就整理一下供以后脑子不好使了的时候前来复习一下。首先说下他们的共同点: 好像就只有
一个,就是它们都可以用来界定一个字符串,这个没什么好解释的,真正需要记住的是它们区别,
所以经过整理后,它们的区别主要包括:
1)、单引号属于强引用,它会忽略所有被引起来的字符的特殊处理,被引用起来的字符会被原封不动的使用,唯一需要注...
我有一个平面文件,我有多次出现的包含单引号的字符串,例如哈里和领导者.
我想用空格替换所有出现的单引号,即
> hari的所有出现都是hari的>所有领导者都出现在领导者身上
我试过了sed -e 's/"'"/ /g' myfile.txt和sed -e 's/"'"/" "/g' myfile.txt但他们没有给我预期的结果.解决方法:尝试尽可能简单地保持sed命令,否则你会在以后阅读之后对你所写的内容感到困惑.#!/bin/bash
sed "s/'/ /g" myfile.txt
为什么第二个单行内容尽管有单引号?perl -wE 'say('Hello')'# Name "main::Hello" used only once: possible typo at -e line 1.
# say() on unopened filehandle Hello at -e line 1.perl -wE 'say length('Hello')'# 5解决方法:在shell命令中,’abc’def,abc’def’,abcdef和’abcdef’都是等价的,所以’…’Hello’ …’与’… Hello …’相同.
对于perl -wE’say(‘Hello’)’,你的shell调用exec("perl", "-wE", "say(Hello)"...
我有以下脚本(从外部服务获取我当前的IP):#!/bin/bash
####################################################################
# Gets the public IP address of current server
####################################################################cmd='curl -s'
#cmd='wget -q -O'
#cmd='lynx -dump'ipservice=checkip.dyndns.orgpipecmd="sed -e 's/.*Current IP Address: //' -e 's/<.*\$//'"# Run command
echo $($cmd $...
用一个小程序(argv.py)来演示下:#!/usr/local/bin/python3
import sysprint(sys.argv has these, len(sys.argv), elements:, sys.argv) 运行与结果:# 首先是赋予执行权限
chmod 755 argv.py#1 一个空格一个命令行参数
./argv.py I love Shell scripting.
sys.argv has these 5 elements: [./argv.py, I, love, Shell, scripting.] #2 命令行所有参数被或者""引起来变成一个字符串
./ar...
1. 单引号 ( )
# grep Susan phonebook
Susan Goldberg 403-212-4921
Susan Topple 212-234-2343
如果我们想查找的是Susan Goldberg,不能直接使用grep Susan Goldberg phonebook命令,grep会把Goldberg和phonebook当作需要搜索的文件
# grep Susan Gold phonebook
Susan Goldberg 403-212-4921
当shell碰到第一个单引号时,它忽略掉其后直到右引号的所有特殊字符2. 双引号 ( " " )
双引号作用与单引号类似,区别在于它没有那么严...
1.单引号 ( ) 单引号,不具有变量置换的功能,即单引号会告诉shell忽略所有的特殊字符2.双引号(" ") 双引号,具有变量置换的功能,即双引号之要求忽略大多数特殊字符,除了$(使用变量前导符), (转义符), `(反向引号)。
3.反向引号( ): 命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。(相当于$(...))
$( )与``的区别在操作上,这两者都是达到相应的效果...