第ä¸ä¸ªshellèæ¬ç¨åºï¼
#!/bin/bash
# ä¸é¢ä¸ç #! æ¯ä¸ç§çº¦å®æ è®°, å®å¯ä»¥åè¯ç³»ç»è¿ä¸ªèæ¬éè¦ä»ä¹æ ·ç解éå¨æ¥æ§è¡;echo "Hello, world!"
åé:
å®ä¹åé:
country="China"Number=100
注æ: 1,åéååçå·ä¹é´ä¸è½æç©ºæ ¼;
2,é¦ä¸ªåç¬¦å¿ é¡»ä¸ºåæ¯ï¼a-zï¼A-Zï¼ã
3, ä¸é´ä¸è½æç©ºæ ¼ï¼å¯ä»¥ä½¿ç¨ä¸å线ï¼_ï¼ã
4, ä¸è½ä½¿ç¨æ ç¹ç¬¦å·ã
5, ä¸è½ä½¿ç¨bashéçå ³é®åï¼å¯ç¨helpå½ä»¤æ¥çä¿çå ³é®åï¼ã
使ç¨åé:
åªéè¦å¨ä¸ä¸ªå®ä¹è¿çåéåé¢å ä¸ç¾å ç¬¦å· $ å°±å¯ä»¥äº, å¦å¤,对äºåéç{} æ¯å¯ä»¥éæ©ç, å®çç®ç为帮å©è§£éå¨è¯å«åéçè¾¹ç.
country="China"echo $countryecho ${country}echo "I love my ${country}abcd!"
#è¿ä¸ªéè¦æï½ï½çï¼
éå®ä¹åéï¼ ç´æ¥æåééæ°åå¼å§å®ä¹çé£æ ·åèµå¼å°±å¯ä»¥äºï¼
country="China"country="ribenguizi"
åªè¯»åé: ç¨ readonly å½ä»¤ å¯ä»¥æåéåä¹ä¸ºåªè¯»åéã
readonly country="China"#æ
country="China"readonly country
å é¤åé: 使ç¨unsetå½ä»¤å¯ä»¥å é¤åéï¼ä½æ¯ä¸è½å é¤åªè¯»çåéãç¨æ³ï¼
unset variable_name
åéç±»å
è¿è¡shellæ¶ï¼ä¼åæ¶åå¨ä¸ç§åéï¼
1) å±é¨åé
å±é¨åéå¨èæ¬æå½ä»¤ä¸å®ä¹ï¼ä» å¨å½åshellå®ä¾ä¸ææï¼å ¶ä»shellå¯å¨çç¨åºä¸è½è®¿é®å±é¨åéã
2) ç¯å¢åé
ææçç¨åºï¼å æ¬shellå¯å¨çç¨åºï¼é½è½è®¿é®ç¯å¢åéï¼æäºç¨åºéè¦ç¯å¢åéæ¥ä¿è¯å ¶æ£å¸¸è¿è¡ãå¿ è¦çæ¶åshellèæ¬ä¹å¯ä»¥å®ä¹ç¯å¢åéã
3) shellåé
shellåéæ¯ç±shellç¨åºè®¾ç½®çç¹æ®åéãshellåéä¸æä¸é¨åæ¯ç¯å¢åéï¼æä¸é¨åæ¯å±é¨åéï¼è¿äºåéä¿è¯äºshellçæ£å¸¸è¿è¡
ç¹æ®åé:
$* å $@ çåºå«ä¸º: $* å $@ é½è¡¨ç¤ºä¼ éç»å½æ°æèæ¬çææåæ°ï¼ä¸è¢«åå¼å·(" ")å å«æ¶ï¼é½ä»¥"$1" "$2" ⦠"$n" çå½¢å¼è¾åºææåæ°ãä½æ¯å½å®ä»¬è¢«åå¼å·(" ")å å«æ¶ï¼"$*" ä¼å°ææçåæ°ä½ä¸ºä¸ä¸ªæ´ä½ï¼ä»¥"$1 $2 ⦠$n"çå½¢å¼è¾åºææåæ°ï¼"$@" ä¼å°å个åæ°åå¼ï¼ä»¥"$1" "$2" ⦠"$n" çå½¢å¼è¾åºææåæ°ã
$? å¯ä»¥è·åä¸ä¸ä¸ªå½ä»¤çéåºç¶æãæè°éåºç¶æï¼å°±æ¯ä¸ä¸ä¸ªå½ä»¤æ§è¡åçè¿åç»æãéåºç¶ææ¯ä¸ä¸ªæ°åï¼ä¸è¬æ åµä¸ï¼å¤§é¨åå½ä»¤æ§è¡æåä¼è¿å 0ï¼å¤±è´¥è¿å 1ã
Shellä¸çæ¿æ¢
转ä¹ç¬¦ï¼
å¨echoä¸å¯ä»¥ç¨äºç转ä¹ç¬¦æï¼
ä½¿ç¨ echo å½ä»¤ç âE é项ç¦æ¢è½¬ä¹ï¼é»è®¤ä¹æ¯ä¸è½¬ä¹çï¼ ä½¿ç¨ ân é项å¯ä»¥ç¦æ¢æå ¥æ¢è¡ç¬¦ï¼
ä½¿ç¨ echo å½ä»¤ç âe é项å¯ä»¥å¯¹è½¬ä¹å符è¿è¡æ¿æ¢ã
å¦å¤ï¼æ³¨æï¼ç»è¿æçå®éªï¼å¾å°ï¼
echo "\\" #å¾å° \echo -e "\\" #å¾å° \echo "\\\\" #å¾å° \\echo -e "\\" #å¾å° \
å½ä»¤æ¿æ¢:
å®çææå°±æ¯è¯´æ们æä¸ä¸ªå½ä»¤çè¾åºèµå¼ç»ä¸ä¸ªåé,æ¹æ³ä¸ºæå½ä»¤ç¨åå¼å·(å¨Escä¸æ¹)å¼èµ·æ¥. æ¯å¦:
directory=`pwd`echo $directory
åéæ¿æ¢:
å¯ä»¥æ ¹æ®åéçç¶æï¼æ¯å¦ä¸ºç©ºãæ¯å¦å®ä¹çï¼æ¥æ¹åå®çå¼.
Shellè¿ç®ç¬¦
ç®æ°è¿ç®ç¬¦:
åçbashä¸æ¯æç®åçæ°å¦è¿ç®ï¼ä½æ¯å¯ä»¥éè¿å ¶ä»å½ä»¤æ¥å®ç°ï¼ä¾å¦ awk å expr. ä¸é¢ä½¿ç¨exprè¿è¡ï¼ expræ¯ä¸æ¬¾è¡¨è¾¾å¼è®¡ç®å·¥å ·ï¼ä½¿ç¨å®å¯ä»¥å®æ表达å¼çæ±å¼æä½ï¼
æ¯å¦ï¼
a=10b=20expr $a + $bexpr $a - $bexpr $a \* $bexpr $a / $bexpr $a % $b
a=$b
注æ: 1. å¨exprä¸çä¹å·ä¸ºï¼\*
2. å¨ exprä¸ç 表达å¼ä¸è¿ç®ç¬¦ä¹é´è¦æç©ºæ ¼ï¼å¦åé误ï¼
3. å¨[ $a == $b ]ä¸[ $a != $b ]ä¸ï¼è¦éè¦å¨æ¹æ¬å·ä¸åé以ååéä¸è¿ç®ç¬¦ä¹é´ä¹éè¦ææ¬å·ï¼ å¦å为é误çãï¼äº²æµè¿ï¼
å ³ç³»è¿ç®ç¬¦ï¼
åªæ¯ææ°åï¼ä¸æ¯æå符串ï¼é¤éå符串çå¼æ¯æ°åã常è§çæï¼
注æï¼ä¹å«å¿è®°äºç©ºæ ¼ï¼
å¸å°è¿ç®ç¬¦ï¼
å符串è¿ç®ç¬¦ï¼
æ件æµè¯è¿ç®ç¬¦:
æ£æµ Unix æ件çåç§å±æ§ã
Shellä¸çå符串
åå¼å·çéå¶ï¼
åå¼å·éçä»»ä½å符é½ä¼åæ ·è¾åºï¼åå¼å·å符串ä¸çåéæ¯æ æçï¼
åå¼å·å串ä¸ä¸è½åºç°åå¼å·ï¼å¯¹åå¼å·ä½¿ç¨è½¬ä¹ç¬¦åä¹ä¸è¡ï¼ã
åå¼å·çä¼ç¹ï¼
åå¼å·éå¯ä»¥æåé
åå¼å·éå¯ä»¥åºç°è½¬ä¹å符
æ¼æ¥å符串ï¼
country="China"echo "hello, $country"#ä¹å¯ä»¥echo "hello, "$country" "è·åå符串é¿åº¦:
string="abcd"echo ${#string} #è¾åº 4æååå符串:
string="alibaba is a great company"echo ${string:1:4} #è¾åºlibaæ¥æ¾åå符串:
string="alibaba is a great company"echo `expr index "$string" is`å¤çè·¯ç»çå符串ï¼
ä¾å¦ï¼å½ä¸ä¸ªè·¯å¾ä¸º /home/xiaoming/1.txtæ¶ï¼å¦ä½æä¹å®çè·¯å¾ï¼ä¸å¸¦æ件) åå¦ä½å¾å°å®çæ件åï¼ï¼
å¾å°æ件åä½¿ç¨ bashnameå½ä»¤ï¼
# åæ°ï¼å¾å°è·¯å¾åï¼ä¸å¸¦æ件åï¼ä½¿ç¨ dirnameå½ä»¤ï¼
åæ°ï¼æ²¡æå¥åæ°ï¼//ä¾åï¼Shellçæ°ç»:
bashæ¯æä¸ç»´æ°ç», ä¸æ¯æå¤ç»´æ°ç», å®çä¸æ ä»0å¼å§ç¼å·. ç¨ä¸æ [n] è·åæ°ç»å ç´ ï¼
å®ä¹æ°ç»ï¼
å¨shellä¸ç¨æ¬å·è¡¨ç¤ºæ°ç»ï¼å ç´ ç¨ç©ºæ ¼åå¼ã å¦ï¼
array_name=(value0 value1 value2 value3)ä¹å¯ä»¥åç¬å®ä¹æ°ç»çå个åéï¼å¯ä»¥ä¸ä½¿ç¨è¿ç»çä¸æ ï¼èä¸ä¸æ çèå´æ²¡æéå¶ãå¦ï¼
array_name[0]=value0读åæ°ç»ï¼
读åæ个ä¸æ çå ç´ ä¸è¬æ ¼å¼ä¸º:
${array_name[index]}读åæ°ç»çå ¨é¨å ç´ ï¼ç¨@æ*
${array_name[*]}è·åæ°ç»çä¿¡æ¯ï¼
åå¾æ°ç»å ç´ ç个æ°ï¼
length=${#array_name[@]}è·åæ°ç»çä¸æ ï¼
length=${!array_name[@]}åå¾æ°ç»å个å ç´ çé¿åº¦:
lengthn=${#array_name[n]}printfå½æ°ï¼
å®ä¸cè¯è¨ä¸çprintfç¸ä¼¼ï¼ä¸è¿ä¹æä¸åï¼ä¸é¢ååºå®çä¸åçå°æ¹ï¼
printf å½ä»¤ä¸ç¨å æ¬å·
format-string å¯ä»¥æ²¡æå¼å·ï¼ä½æ好å ä¸ï¼åå¼å·åå¼å·åå¯ã
åæ°å¤äºæ ¼å¼æ§å¶ç¬¦(%)æ¶ï¼format-string å¯ä»¥éç¨ï¼å¯ä»¥å°ææåæ°é½è½¬æ¢ã
arguments 使ç¨ç©ºæ ¼åéï¼ä¸ç¨éå·ã
ä¸é¢ä¸ºä¾åï¼
# format-string为åå¼å·Shellä¸æ¡ä»¶è¯å¥
if è¯å¥
å æ¬ï¼1ï¼ if [ è¡¨è¾¾å¼ ] then è¯å¥ fi
2. if [ è¡¨è¾¾å¼ ] then è¯å¥ else è¯å¥ fi
3. if [ 表达å¼] then è¯å¥ elif[ è¡¨è¾¾å¼ ] then è¯å¥ elif[ è¡¨è¾¾å¼ ] then è¯å¥ â¦â¦ fi
ä¾åï¼
a=10b=20if [ $a == $b ]thenå¦å¤ï¼if ... else è¯å¥ä¹å¯ä»¥åæä¸è¡ï¼ä»¥å½ä»¤çæ¹å¼æ¥è¿è¡ï¼åè¿æ ·ï¼
if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;å ¶ä¸ï¼test å½ä»¤ç¨äºæ£æ¥æ个æ¡ä»¶æ¯å¦æç«ï¼ä¸æ¹æ¬å·([ ])类似ã
case â¦â¦ esacè¯å¥
case ... esac ä¸å ¶ä»è¯è¨ä¸ç switch ... case è¯å¥ç±»ä¼¼ï¼æ¯ä¸ç§å¤åæéæ©ç»æãcaseè¯å¥æ ¼å¼å¦ä¸ï¼
case å¼ in模å¼1)å ¶ä¸ï¼ 1. åå¼åé¢å¿ é¡»ä¸ºå ³é®å inï¼æ¯ä¸æ¨¡å¼å¿ 须以å³æ¬å·ç»æãåå¼å¯ä»¥ä¸ºåéæ常æ°ãå¹é åç°åå¼ç¬¦åæä¸æ¨¡å¼åï¼å ¶é´ææå½ä»¤å¼å§æ§è¡ç´è³ ;;ã;; ä¸å ¶ä»è¯è¨ä¸ç break 类似ï¼æææ¯è·³å°æ´ä¸ª case è¯å¥çæåã2. å¦ææ ä¸å¹é 模å¼ï¼ä½¿ç¨æå· * æè·è¯¥å¼ï¼åæ§è¡åé¢çå½ä»¤ã