1. 程式人生 > >shell裏面 $開頭的含義,以及擴展

shell裏面 $開頭的含義,以及擴展

toolbar string mon 輸出 最短匹配 轉義 最短 引號 變量

對於shell裏面的set以及eval的用法:

set的作用設置位置參數(同命令行腳本的傳參)

eval的作用是進行第二次描述

root@ubuntu:/home/xpg# set -- hello shanghai liangge     
root@ubuntu:/home/xpg# eval echo \$$#
liangge
root@ubuntu:/home/xpg#

shell裏面的關於 "$"的作用:

$0:腳本名稱

如果想獲得腳本的路徑以及腳本的名稱可以使用dirname和basename

root@ubuntu:/home/xpg# dirname /home/xpg/1.sh 
/home/xpg
root@ubuntu:/home/xpg# basename /home/xpg/1.sh    
1.sh

$n:輸出具體的參數

$#:總幾個參數

$*:和下面的$@在不帶引號的情況下是一樣的

$@:帶上引號的區別。可以用set設置位置參數看看,這兩個一般不用


$?:對上一個命令執行的判斷,如果正確,為0,否則為非零

企業中使用$?的用法:

判斷腳本命令,腳本是否執行成功

*若在腳本中,使用exit n來返回數字給$?

*若在函數中,使用return來返回數字給$?

$$:獲得腳本的進程號

生產的上的例子就是多次執行一個腳本的時候,第一次沒有執行完,第二次就要先將這個腳本的pid刪除,在使用$$判斷這個腳本的pid


bash shell的內置命令:

echo:

-n:不換行輸出內容

-e:解析轉義字符(下面用到)

\n:換行

\r:回車

\t:tab健

\b:退格

root@ubuntu:/home/xpg# echo me;echo you
me
you
root@ubuntu:/home/xpg# echo -n  me;echo you
meyou
root@ubuntu:/home/xpg# printf "log\tlog\npog\tpog\n"
log     log
pog     pog
root@ubuntu:/home/xpg# echo -e "log\tlog\npog\tpog"  
log     log
pog     pog
root@ubuntu:/home/xpg# echo -e log\tlog\npog\tpog 
logtlognpogtpog

exec:執行完命令會退出當前的shell的

root@ubuntu:/home/xpg# exec date
Mon Jan 22 07:07:25 PST 2018
xpg@ubuntu:~

關於shell變量子串知識以及實踐
${變量名}:值
${#變量名}:長度
${變量名:num}:從num開始到最後,num是一個數字
${變量名:num:num1}:從num到num1之間的字符
${變量名#word}:從變量開頭刪除最短匹配的word子串
${變量名##word}:從變量開頭刪除最長匹配的word子串
${變量名%word}:從右邊開始刪除的
%%:從變量右邊刪除匹配最長匹配的word,word可以是(a*c代表是的a到c,[0-9])

${parameter/pattern/string}:使用第一個代替第一個匹配的pattern
${parameter//pattern/string}:使用string代替所有的pattern
修改文件名:
anaconda-ks.cfg  stu_102_1_finished.jpg
[root@localhost ~]# rename "_finished" "" *.jpg
[root@localhost ~]# ls
anaconda-ks.cfg  stu_102_1.jpg

shell裏面 $開頭的含義,以及擴展