本人博客同步發(fā)表,排版更佳
echo、讀取輸入、多行注釋
#!/bin/sh
# echo使用
echo "hello world"
echo `date`
echo "-----開啟轉(zhuǎn)義-----"
echo -e "OK! \n" # -e 開啟轉(zhuǎn)義
echo "It it a test"
echo -e "OK! \c" # -e 開啟轉(zhuǎn)義 \c 不換行
echo "It is a test"
# 讀取輸入
echo "---讀取輸入內(nèi)容---"
read input
echo "${input} is your input"
#-p 輸入提示文字
#-n 輸入字符長度限制(達(dá)到6位,自動結(jié)束)
#-t 輸入限時
#-s 隱藏輸入內(nèi)容
read -p "請輸入一段文字:" -n 6 -t 5 -s password
echo -e "\npassword is $password"
echo "------多行注釋--------"
:<<!
這是注釋
這是注釋
這是注釋
!
echo "=======注釋結(jié)束========"
字符串、數(shù)組
#!/bin/sh
# 數(shù)組
array_name=(value0 value1 value2 value3)
echo ${array_name[@]}
echo "======獲取數(shù)組長度======"
echo ${#array_name[@]}
echo "------獲取某個元素的長度--------"
echo ${#array_name[1]}
# 字符串
echo "-----單引號內(nèi)使用變量無效------"
var="pegasus"
str='my name is ${var}'
echo ${str}
echo "-----雙引號內(nèi)使用變量有效------"
str="my name is ${var}"
echo ${str}
echo "-------字符串拼接--------"
str="my name is "
echo ${str} ${var}
echo "------截取字符 從第3個字符開始,截取2個字符-----"
str="0123456789"
echo ${str:2:2}
echo "------查找字符 3或者5的位置--------"
str="123456789"
echo `expr index "${str}" 35`
計算與比較
#!/bin/sh
# 算數(shù)計算
echo "expr 是一款表達(dá)式計算工具,使用它能完成表達(dá)式的求值操作。----加法 注意空格----"
var=`expr 2 + 2`
echo ${var}
a=10
b=20
val=`expr $a + $b`
echo "a + b : $val"
val=`expr $a - $b`
echo "a - b : $val"
val=`expr $a \* $b`
echo "a * b : $val"
val=`expr $b / $a`
echo "b / a : $val"
val=`expr $b % $a`
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi
# 大小比較
#!/bin/sh
echo "-eq 相等==;-ne 不相等!=;-gt 大于>;-lt 小于<;-ge >= ;-le <="
a=10
b=20
if [ $a -eq $b ]
then
echo "$a -eq $b : a 等于 b"
else
echo "$a -eq $b: a 不等于 b"
fi
if [ $a -ne $b ]
then
echo "$a -ne $b: a 不等于 b"
else
echo "$a -ne $b : a 等于 b"
fi
if [ $a -gt $b ]
then
echo "$a -gt $b: a 大于 b"
else
echo "$a -gt $b: a 不大于 b"
fi
if [ $a -lt $b ]
then
echo "$a -lt $b: a 小于 b"
else
echo "$a -lt $b: a 不小于 b"
fi
if [ $a -ge $b ]
then
echo "$a -ge $b: a 大于或等于 b"
else
echo "$a -ge $b: a 小于 b"
fi
if [ $a -le $b ]
then
echo "$a -le $b: a 小于或等于 b"
else
echo "$a -le $b: a 大于 b"
fi
變量、腳本入?yún)?/h4>
#!/bin/sh
echo "-------------unset----------------"
tmp="unset var"
echo ${tmp}
unset tmp
echo ${tmp}
echo "---------read only var-----------"
read="read only var"
echo ${read}
readonly read
read="change"
# 腳本入?yún)?echo "Shell 傳遞參數(shù)實(shí)例!";
echo "執(zhí)行的文件名:$0";
echo "第一個參數(shù)為:$1";
echo "第二個參數(shù)為:$2";
echo "第三個參數(shù)為:$3";
echo "參數(shù)個數(shù)為:$#";
echo "傳遞的參數(shù)作為一個字符串顯示:$*";
echo "--- * 等價于 \"1 2 3\"(傳遞了一個參數(shù)),
而 \"@\" 等價于 \"1\" \"2\" \"3\"(傳遞了三個參數(shù))。---"
echo "-- \$* 演示 ---"
for i in "$*"; do
echo $i
done
echo "-- \$@ 演示 ---"
for i in "$@"; do
echo $i
done
printf
#!/bin/sh
printf "Hello, Shell\n"
echo "
1. %-10s 指一個寬度為10個字符(-表示左對齊,沒有則表示右對齊)
任何字符都會被顯示在10個字符寬的字符內(nèi)
如果不足則自動以空格填充,超過也會將內(nèi)容全部顯示出來。
2. %-4.2f 指格式化為小數(shù),其中.2指保留2位小數(shù)。
"
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
printf "%-12s %-5s %-4.4f\n" hehehhsh hsidhiss 4.44444
function
#!/bin/bash
demoFun(){
echo "這是我的第一個 shell 函數(shù)!"
}
echo "-----函數(shù)開始執(zhí)行-----"
demoFun
echo "-----函數(shù)執(zhí)行完畢-----"
funWithReturn(){
echo "這個函數(shù)會對輸入的兩個數(shù)字進(jìn)行相加運(yùn)算..."
echo "輸入第一個數(shù)字: "
read aNum
echo "輸入第二個數(shù)字: "
read anotherNum
echo "兩個數(shù)字分別為 $aNum 和 $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
# 函數(shù)返回值在調(diào)用該函數(shù)后通過 $? 來獲得。
echo "輸入的兩個數(shù)字之和為 $? !"
# $10 不能獲取第十個參數(shù),獲取第十個參數(shù)需要${10}。當(dāng)n>=10時,需要使用${n}來獲取參數(shù)。
funWithParam(){
echo "第一個參數(shù)為 $1 !"
echo "第二個參數(shù)為 $2 !"
echo "第十個參數(shù)為 $10 !"
echo "第十個參數(shù)為 ${10} !"
echo "第十一個參數(shù)為 ${11} !"
echo "參數(shù)總數(shù)有 $# 個!"
echo "作為一個字符串輸出所有參數(shù) $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
source
以下是use_source.sh內(nèi)容,能夠輸出source.sh中的變量name
#!/bin/sh
. ./source.sh
echo ${name}
以下是source.sh內(nèi)容
#!/bin/sh
name="pegasus"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。