echo與函式

sarynsuo發表於2021-01-03

echo

echo -n 表示不換行輸出

echo -e 輸出轉義字元,將轉義後的內容輸出到螢幕上

常用的轉義字元如下:
\b 轉義後相當於按退格鍵(backspace),但前提是"\b"後面存在字元;"\b"表示刪除前一個字元,"\b\b"表示刪除前兩個字元。

\c 不換行輸出,在"\c"後面不存在字元的情況下,作用相當於 echo -n; 但是當"\c"後面仍然存在字元時,"\c"後面的字元將不會被輸出。

\n 換行,被輸出的字元從"\n"處開始另起一行。

\f 換行,但是換行後的新行的開頭位置連線著上一行的行尾;

\v 與\f相同;

\t 轉以後表示插入tab,即橫向製表符;

\r 游標移至行首,但不換行,相當於使用"\r"以後的字元覆蓋"\r"之前同等長度的字元;但是當"\r"後面不存在任何字元時,"\r"前面的字元不會被覆蓋

\ 表示插入""本身;

for i in {1…10} {1…10…2}
$(seq 1 10) $(seq 1 2 10)
for ((i=1; i<=10; i++)) ((i=1; i<=10; i+=2))
do
echo $i
done

for ((i=1; i<=10; i++));do echo $i;done

break跳出單個迴圈

for ((a=1; a<=5; a++))
do
echo “outer loop: $a”
for ((b=1; b<=50; b++))
do
if [ $b -eq 5 ]
then
break
fi
echo “inter loop: $b”
done
done

continue中止某次迴圈中的命令,但不會完全中止整個命令
for ((a=1; a<=15; a++))
do
if [ $a -gt 5 ] && [ $a -lt 10 ]
then
continue
fi
echo “current value: $a”
done

IFS欄位分隔符

預設包含 空格,製表符,換行符 set | grep IFS
IFS=$’ \t\n’

修改成只換行
IFS=$’\n’

IFS=:
IFS=’,’

IFS.OLD= I F S I F S = IFS IFS= IFSIFS=’\n’

IFS=$IFS.OLD

輸出環境變數PATH所包含的所有目錄以及其中的所有可執行檔案

函式

【1】
function 函式名 {
命令序列
}

【2】
函式名() {
命令序列
}

返回值

return表示退出函式並返回一個退出值,指令碼中可以用 ? 變 量 顯 示 該 值 使 用 原 則 : 1 、 函 數 一 結 束 就 取 返 回 值 , 因 為 ?變數顯示該值 使用原則: 1、函式一結束就取返回值,因為 ?使1?變數只返回執行的最後一條命令的退出狀態碼
2、退出狀態碼必須是0~255,超出時值將為除以256取餘

function db1 {
read -p “請輸入:” value
return [ [ [value * 2]
}
db1
echo $?

db1() {
read -p “請輸入:” value
echo [ [ [value * 2]
}
result=db1
echo $result

傳參

sum() {
s=$[$1 + $2]
echo $s
}
sum $1 $2

遞迴

函式呼叫自己本身的函式
fact() {
if [ 1 − e q 1 ] t h e n e c h o 1 e l s e l o c a l t e m p = 1 -eq 1 ] then echo 1 else local temp= 1eq1]thenecho1elselocaltemp=[ 1 − 1 ] l o c a l r e s u l t = 1 - 1] local result= 11]localresult=(fact $temp)
echo $[$1 * KaTeX parse error: Expected 'EOF', got '}' at position 14: result] fi }̲ read -p "請輸入:"…(fact $n)
echo $result

建立庫

vim myfuncs.sh
jiafa() {
echo $[$1 + $2]
}

chengfa() {
echo $[$1 * $2]
}

chufa() {
if [ $2 -ne 0 ];then
echo $[$1 / $2]
else
echo “$2不能為0”
fi
}

vim test.sh
. myfuncs.sh

value1=10
value2=5
result1=jiafa $value1 $value2
result2=chengfa $value1 $value2
result3=chufa $value1 $value2
echo “加法結果為: r e s u l t 1 " e c h o " 乘 法 結 果 為 : result1" echo "乘法結果為: result1"echo"result2”
echo “除法結果為:$result3”

相關文章