程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> shell裡的括號的用法

shell裡的括號的用法

編輯:關於MYSQL數據庫
我一下子也想不起該起什麼標題,就取了這樣一個不太合適的標題。
在這裡我想說的是幾種shell裡的小括號,大括號結構和有括號的變量,命令的用法,如下: PHP代碼: 1.$
2.$(cmd)
3.()和{}
4.${var:-string},${var:+string},${var:=string},${var:?string}
5.$((exp))
6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)

我一下子也想不起該起什麼標題,就取了這樣一個不太合適的標題。
在這裡我想說的是幾種shell裡的小括號,大括號結構和有括號的變量,命令的用法,如下: PHP代碼: 1.$
2.$(cmd)
3.()和{}
4.${var:-string},${var:+string},${var:=string},${var:?string}
5.$((exp))
6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern)

現在分述如下:
1.Shell中變量的原形:$
大家常見的變量形式都是$var,如 PHP代碼: $ var=test
$ echo $var
test
但當你要顯示變量值加隨意的字符(我這裡用AA)時,就會出錯,如下: PHP代碼: $ echo $varAA

$
這時應該用變量的原形:$,即是加一個大括號來限定變量名稱的范圍,如下 PHP代碼: $ echo $AA
testAA
$
以這個特性,我們可以很方便地寫一個批量改後綴名的程序,我把它命名為mymv,程序如下: PHP代碼: #!/bin/bash

tail=$1
for filename in `ls`
do
mv $filename ${filename}.$tail
done
程序需要提供一個後綴名,如c,表示改為後綴為c的C程序文件,看下面的測試: PHP代碼: $ ls
a b c
$ mymv c
$ ls
a.c b.c c.c
$
看樣子程序運行的很好,但這是不完善的程序,有2個要注意的問題:
A,目錄下沒有子目錄,如果有一個目錄,假設為dir,則也會被改為dir.c,這顯然不是我們想要的,應該修正這個程序能識別目錄。
B,沒有幫助對程序的參數進行處理,程序應該足夠友好,在用戶沒有給定後綴名時應能處理,像上面的將直接給文件加上了一個點(.),這顯然也不是我們想要的。

因為我們的目的是說明$,這樣已經足夠了,因此這裡不會再對上面的程序進行修正。

2.命令替換$(cmd)
命令替換$(cmd)和符號`cmd`(注意這不是單引號,在美式鍵盤上,`是ESC下面的那個鍵)有相同之處 PHP代碼: $ ls
a b c
$ echo $(ls)
a b c
$ echo

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved