shell的高階程式設計 二兩雪碧

2022-09-23 06:45:09 字數 1698 閱讀 5867

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...