$
如果parameter不為空,就替換它的值,否則就替換為value。
示例:donggua@donggua-desktop:~]$ echo using editor $
using editor /home/donggua/make$$
與$基本相同,區別是,當parameter為空時,不但使用value,而且把它賦給parameter。
不能用這種方法給位置引數賦值。(也就是parameter不能為數字)。
[donggua@donggua-desktop:~]$ zsh=
[donggua@donggua-desktop:~]$ :$
[donggua@donggua-desktop:~]$ zsh=:$
[donggua@donggua-desktop:~]$ echo $zsh
:/bin/vi
$如果parameter不為空,shell替換它的值。否則shell就把value寫入標註錯誤,然後退出
[donggua@donggua-desktop:~]$ donggua=:$
bash: donggua: no donggua file
$如果parameter不為空,則該結構替換為value,否則什麼也不替換。
[donggua@donggua-desktop:~]$ traceopt=t
[donggua@donggua-desktop:~]$echo option : $(traceopt:+「trace mode」}
option: trace mode
[donggua@donggua-desktop:~]$traceopt=
[donggua@donggua-desktop:~]$ echo option : $(traceopt:+「trace mode」}
option:
$替換為parameter的長度。如果parameter是*或者@結果不定。
[donggua@donggua-desktop:~]$ text="the shell"
[donggua@donggua-desktop:~]$ echo $
9模式匹配結構:
[donggua@donggua-desktop:~]$ var=testcase
[donggua@donggua-desktop:~]$ echo $var
testcase
[donggua@donggua-desktop:~]$ echo $
testcas
[donggua@donggua-desktop:~]$ echo $var
testcase
[donggua@donggua-desktop:~]$ echo $
testca
[donggua@donggua-desktop:~]$ echo $
te[donggua@donggua-desktop:~]$ echo $
stcase
[donggua@donggua-desktop:~]$ echo $
tcase
[donggua@donggua-desktop:~]$ echo $
e[donggua@donggua-desktop:~]$ echo $
testcase
[donggua@donggua-desktop:~]$ cat mybasename
echo $
[donggua@donggua-desktop:~]$ ./mybasename /usr/spool/donggua
donggua
shell教本的追蹤與除錯:
[donggua@donggua-desktop:~]$ cat ctype
if [ $# -ne 1 ]
then
echo "用法:ctype字元"
exit 1
fichar="$1"
numchar=$(echo "$char" | wc -c)
if [ "$numchar" -ne 1 ]
then
echo "請鍵入單字元"
exit 1
ficase "$char" in
[0-9]) echo "數字";;
[a-z]) echo "小寫字母";;
[a-z]) echo "大寫字母";;
*) echo "特殊字元";;
esac
[donggua@donggua-desktop:~]$ sh -x ./ctype a
+ [ 1 -ne 1 ]
+ char=a
+ echo a
+ wc -c
+ numchar=2
+ [ 2 -ne 1 ]
+ echo 請鍵入單字元
請鍵入單字元
+ exit 1
set:作用1:設定各種shell選項;用2: 給位置引數$1,$2等重新賦值。
set -x
-x開啟shell的跟蹤模式:
[donggua@donggua-desktop:~]$ x=*
[donggua@donggua-desktop:~]$ set -x
[donggua@donggua-desktop:~]$ cmd=wc
+ cmd=wc
[donggua@donggua-desktop:~]$ ls | $cmd -l
+ wc -l
+ ls --color=auto
48關閉跟蹤模式
[donggua@donggua-desktop:~]$ set +x
+ set +x
[donggua@donggua-desktop:~]$ ls | wc -l
48不帶引數的set命令:
[donggua@donggua-desktop:~]$ cat words
#count words on a line
read line
set $line
echo $#
[donggua@donggua-desktop:~]$ ./words
here's a line for you to count
7--選項
[donggua@donggua-desktop:~]$ ./words
-1+5=4
./words: line 3: set: -1: 無效的選項
統計目錄下的檔案數:
[donggua@donggua-desktop:~]$ set *
[donggua@donggua-desktop:~]$ echo $#
49
Linux 12 可變引數函式
c函式要在程式中用到以下這些巨集 void va start va list arg ptr,prev param type va arg va list arg ptr,type void va end va list arg ptr va list 用來儲存巨集va start va arg和v...
Linux12執行緒同步,併發問題(未完)
top 顯示一些資訊關於cpu的 設定cpu的效能,taskset,指定某個程序在某個核心上執行。cpu親和性 使用多處理器資源,同時做兩件以上事情,時候用執行緒 執行緒間通訊問題 同步 四種方法 使用者可以用 訊號量 互斥鎖條件變數 讀寫鎖核心空間的方法 自旋鎖 1.執行緒 程序內部的一條執行路徑...
linux12 檔案訪問控制列表
一般許可權 特殊許可權 隱藏許可權其實有乙個共性 許可權是針對某一類使用者設定的。如果希望對某個指定的使用者進行單獨的許可權控制,就需要用到檔案的訪問控制列表 acl 了。通俗來講,基於普通檔案或目錄設定acl其實就是針對指定的使用者或使用者組設定檔案或目錄的操作許可權。另外,如果針對某個目錄設定了...