shell的高階程式設計
關於for for 變數名字 in 列表;do
迴圈體done
例如for: for name [in words ... ] ; do commands; don其中前面的name就是個變數名,而且不需要加$,每次迴圈和中間列表中的值有關,中間的列表可以使用花括號來表示指定範圍,也可以使用一些命令來生成列表,但是需要加$(),要把前面的變數名和後面的迴圈體連線起來。例如:
[root@centos7 data]#touch f1,txt
[root@centos7 data]#touch f2.txt
[root@centos7 data]#touch f3.txt
[root@centos7 data]#for file in *.txt;do echo
filename is $file;done
filename is f2.txt
filename is f3.txt
其中的萬用字元來表示的話是不需要加雙引號的。
但是如果要在指令碼裡面引用檔案可以使用命令cat filename,前提是命令需要反向單引號。例如:
#!/bin/bash
for user in` cat userlist.txt;do
useradd $user
done
如果說資料量比較大的話可以實行並行執行,使用{}括起來然後最後加&,例如:
#!/bin/bash
netid=172.16.128
for hostid in ;do
&done
wait
for也是可以套嵌的,例如:
#!/bin/bash
for i in ;do
for j in ;do
echo -e '*\c'
done
echo
done
關於for還可以使用(( ))裡面只要不是數字就認為是變數,例如:
#!/bin/bash
n=10
for ((sum=0,i=1;i<=n;i++));do
let sum+=i
done
echo sum=$sum
像continue只是臨時結束一次迴圈,並不影響大迴圈。例如:
#!/bin/bash
for ((i=0;i<10;i++));do
if [ $i -eq 5 ];then
continue
fiecho i=$i
done
如果說確定終止迴圈可以使用break,但是並不是退出指令碼,只是退出迴圈而已,退出指令碼可以使用exit。例如:
#!/bin/bash
for ((i=0;i<10;i++));do
if [ $i -eq 5 ];then
break
fiecho i=$i
done
這個例子就是列印到4,5以後就不再迴圈了,但是不會整個指令碼的結束,以後的指令碼還會繼續執行。
shift可以接連執行,例如建立不同使用者吧:
#!/bin/bash
while [ "$1" ];do
useradd $1
echo user:$1 is created
shift
done
echo finish
這個指令碼如果執行的話,後面跟幾個使用者名稱都可以建立。
初學高階程式設計 shell程式設計
初學shell程式設計,遇到的一些問題和總結 一 bin sh 為什麼要在shell程式裡要加這一行?首先在shell程式設計裡面,符號確實是乙個注釋符號,但是在這裡絕對不是注釋符號,是給的乙個shell的路徑,相當於是給的乙個環境變數。如果沒有加上這一句話,則程式執行會用預設的shell來解釋執行...
shell程式設計高階3
二 case結構條件句 1 語法格式 case 字串變數 in 值1 指令1 值2 值3 值4 指令2 指令 esac 2 示例 1 示例1 根據使用者的選擇輸入,判斷是哪種水果並加上不同顏色 a 給字串加顏色 vi services scripts echo color01.sh echo e 0...
shell高階程式設計 引用
在shell中,引用的意思就是時講字串使用雙擁好括起來,他的作用就是保護字串中的特殊字元 不被shell或者shell指令碼重新解釋,或者擴充套件。andrew andrew ls l ss rwx 1 andrew andrew 3849 1月 19 01 07 sources.list andr...