[color=red]如果系統學習,使用《高階bash指令碼程式設計指南》這本書[/color]
shell初級程式設計 by hayabusa
3.1講義
3.1.1 shell
set //所有變數
unset //取消變數設定
export 變數 //匯出變數,使其全域性可用
env //環境變數
shell基本格式:
#!/bin/bash
//edit...
chmod u+x script
$(command)或者`command` //命令巢狀的寫法
3.1.2
3.1.2.1
stdin 標準輸入
stdout 標準輸出
stderr 標準錯誤輸出
3.1.2.2重定向:
> 輸出重定向
2> 錯誤重定向
&> 全部重定向
tr 'a-z' 'a-z' < var3.sh
3.1.2.3
管道:前者輸出作為後者輸入
ls -l /etc | less
3.1.2.4
多目標重定向
command |tee t2.txt
3.1.3正規表示式
^ $ *
3.1.4 shell 帶引數
$1 $2 $* $#
3.1.5 條件判斷
= -eq
!= -ne
-gt-lt
-ge-le
3.1.6控制流程 -a -o !
while 條件
do命令
done
if 條件
then 命令(可以巢狀if)
elif 條件
then 命令
else
命令(可以巢狀if)
fi@#!!//數值運算加兩對圓括號
case
case 值 in
模式)命令
;;模式)
命令;;
...esac
for 變數 in 'seq 1 100'
do command
done
//break continue 類似於c:exit直接退出,可帶返回值
until 條件
do//command
done
3.2 擴充套件
3.2.1
讀老師的程式偷師到的幾個命令 :wink:
basename /path/filename //printf the real name of a file
cut -d: -f2 // 這個命令用好了非常的強大 :wink:
3.2.2 userlist.sh
# list all the users
#!/bin/bash
n=0;
for i in `cut -d: -f3 /etc/passwd`
do ((n=n+1))
m=`echo "$n " |tr ' ' 'p'`
if [ $i -le 60000 -a $i -ge 500 ]
then cut -d: -f1 /etc/passwd|sed -n $m
elif [ $i = 0 ]
then cut -d: -f1 /etc/passwd|sed -n $m
fidone
3.3 問題
3.3.1
caseselect 檔案中的此句(鄙視自己,看了解釋還不懂 :cry: )
echo "`basename $0`:this is not between 1 and 5" >&2
[color=red] 已解決:
這句話的意思就是將stdout重定向到stderr之中,但是由於stdout與stderr的預設輸出都是monitor,所以看不到效果,下邊的**好些:
echo "`basename $0`:this is not between 1 and 5" 2>ver >&2[/color]
Linux初涉shell指令碼
1 檔案的第一行應為 bin bash 預設執行環境為 bin bash2 chmod x file.sh 使檔案可執行 3 指令碼除錯sh x file.sh1 引用與轉義 強引用 單引號 將字串放置在單引號中,保留字串中所有字元的文字值,同時禁用所有擴充套件.弱引用 雙引號 將字串放置在雙引號中...
初涉彙編《三》
在彙編 二 中我的說的問題,在這就不做回答了,因為乙個暫存器的來儲存資料肯定不夠用,因此,這些暫存器就可以提供空間。好了,這個彙編學習畢竟是我對彙編的個人的學習問題。現在我來說說彙編中後面的幾個標誌暫存器。標誌暫存器總共有9個,分別是cf,pf,af,zf,sf,tf,if,df,of 詳細解答,看...
linux學習1 初涉linux
linux因其穩定高效的特點,受到很多開發者的青睞,因此將其作為伺服器的作業系統。作為一名開發者,程式設計師,掌握了一定的linux知識和技巧,程式的開發部署和執行也有不小的幫助。linux由於其開源的特性,存在很多的版本,大同小異,大多數企業使用rhel。學習linux,首先要有乙個linux環境...