![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
shell13问
shyanyang
这个作者很懒,什么都没留下…
展开
-
双引号与单引号的差别和command中的meta
command line的每一个charactor,分为如下两种:*literal:也就是普通纯文字,对shell来说没特殊功能。*meta:对shell来说,具有特定功能的保留字元。command中的meta:IFS:由或或 三者之一组成(常用space)CR:由产生=:设定变量$:作变量或运算替换(不要跟shell prompt搞混了)>:重定向st转载 2011-12-08 10:50:48 · 1058 阅读 · 0 评论 -
Regular Expression与grep
關鍵是要能夠區分 shell command line 上的 meta 與 literal 這兩種不同的字符類別.然後, 我這裡才跟你講:--- RE 表達式裡的字符也是分為 meta 與 literal 這兩種!呵, 不知親愛的讀者是否被我搞混亂了呢? ... ^_^這也難怪啦, 因為這的確是最容易混亂的地方, 剛學 RE 的朋友很多時候都死在這裡!因此請特別小心理解哦..转载 2011-12-13 17:54:12 · 662 阅读 · 0 评论 -
Wildcard
首先, wildcard 也是屬於 command line 的處理工序, 作用於 argument 裡的 path 之上.沒錯, 它不用在 command_name 也不用在 options 上.而且, 若 argument 不是 path 的話, 那也與 wildcard 無關.換句更為精確的定義來講, wildcard 是一種命令行的路逕擴展(path expansion)功能.转载 2011-12-13 12:17:59 · 2416 阅读 · 0 评论 -
for while 与 until的 差别
bash shell中常用的loop有如下三种:* for* while* untilfor loop 是从一个清单列表中读进变量值,并“依次“的循环执行 do 到 done 之间的命令行。例for var in one two three four fivedo echo ----------- echo '$var is ' $var转载 2011-12-13 11:16:49 · 1198 阅读 · 0 评论 -
$@与$*的差别
要說 $@ 與 $* 之前,需得先從 shell script 的 positional parameter 談起...我們都已經知道變量(variable)是如何定義及替換的,這個不用再多講了。但是,我們還需要知道有些變量是 shell 內定的,且其名稱是我們不能隨意修改的,其中就有 positional parameter 在內。在 shell script 中,我們可用转载 2011-12-10 17:09:15 · 503 阅读 · 0 评论 -
<与>的用法
在shell进程中,最常用的FD(file descriptor)大概有三个,分别为:0:Standard Input(STDIN)1:Standard Output (STDOUT)2:Standard Error Output (STDERR)在标准情况下,这些FD分别跟如下设备(device)关联:stdin(0):keyboardstdout(1):moni转载 2011-12-12 12:38:16 · 530 阅读 · 0 评论 -
$(())与$()还有${}的差别
在bash shell中,$()与``(反引号)都是用来做命令替换(command substitution)的。*完成引号里的命令行,然后将其结果替换出阿里,再重组命令行。例如:$ echo the last sunday is $(date -d "last sunday" +%Y-%m-%d)${}会比较精确的界定变量名称的范围。${}的一些特异功能如下例说明。例转载 2011-12-10 16:43:52 · 644 阅读 · 0 评论 -
if和case
在if判断式中,else部分可以不用,但then是必须的。(若then后不想跑任何command,可用“ :”这个null command代替)。当然,then或else后面,也可以使用更进一层的条件判断式。若有多项条件需要“依序“进行判断的话,那我们则可使用elif这样的keyword。case的用法如下例:QQ () { echo -n "Do y转载 2011-12-12 13:11:15 · 515 阅读 · 0 评论 -
()与{}的差别
在shell command line中()与{}都可以将多个命令作群组化处理,但若从技术细节上,却是很不一样的:():将command group置于sub-shell去执行,也称nested sub-shell。{}:则是在同一个shell内完成,也称non-named command group。注:{}与() 中的命令要用; 分隔开。只有一个时不需要用; 。通常而言转载 2011-12-09 18:25:00 · 609 阅读 · 0 评论 -
exec跟source的差别
进程(process)的观念我们所执行的任何程式,都是由父进程(parent process)所产生出来的一个子进程(child process),子进程在结束后,将返回到父进程去,此现在在Linux系统中被成为fork。当子进程被产生的时候,将会从赴京成哪里获得一定的资源分配/及(更重要的是)继承赴京成的环境!*所谓环境变量其实就是那些会传给子进程的变量。*环境变量只能从父进转载 2011-12-09 13:39:18 · 738 阅读 · 0 评论 -
bash变量(variable)
所谓变量,就是利用一个特定的“名称“(name)來存取一段可以变化的“值“(value)。*设定(set)*在bash中,可以用“=”來设定或宠幸定义变量的内容:name=value在设定变量的时候,得遵守如下规则:*等号左右两边不能使用区隔符号(IFS),也应避免使用shell的保留字元(meta charactor)。*变量名称不能使用$符号*变转载 2011-12-08 12:42:27 · 6509 阅读 · 0 评论 -
echo用法
echo常用的选项: -e:启用反斜线控制字符的转换(参考下表) -E:关闭反斜线控制字符的转换(预设如此) -n:取消行末之换行符号(与-e选项下的\c字符同意)关于echo命令所支持的反斜线控制字符如下表: \a:ALERT/BELL(从系统喇叭送出铃声) \b:BACKSPACE,也就是向左退格键\c转载 2011-12-08 09:51:32 · 633 阅读 · 0 评论 -
[[]]与[]的差别
1.No filename expansion or word splitting takes place between [[ and ]], but there is parameter expansion and command substitution.2.The &&, ||, operators work within a [[ ]] test, despite giving a原创 2012-12-20 21:38:31 · 781 阅读 · 0 评论