Shell 腳本攻略-小試牛刀

在終端中打印

Script

#!/bin/bash
echo hello world
echo 'hello world'
echo "hello world"

echo -e "1\t2\t3"
echo "1\t2\t3"

Note

  • 字符串可以以三種形式輸出,但是單引號(hào)的字符串中不能對(duì)變量求值,例如 var=1; echo 'hello $var' 會(huì)輸出 hello $var
  • echo 的輸出會(huì)默認(rèn)會(huì)增加換行
  • -e 表示字符串中有轉(zhuǎn)義字符

變量和環(huán)境變量

Script

#!/bin/bash
var=123456

echo $var
echo ${var}

echo "var length is: ${#var}"

var_quote="123456"
[ $var -eq $var_quote ] && echo 'var equals to var_quote'
[ $var == $var_quote ] && echo 'var equals to var_quote'
[ $var = $var_quote ] && echo 'var equals to var_quote'

Output

123456
123456
var length is: 6
var equals to var_quote
var equals to var_quote
var equals to var_quote

Note

  • 不論是否有引號(hào),變量值的類型都是 String
  • var = valuevar=value 兩者含義不同,前者表示等于條件判斷,后者表示賦值。

數(shù)學(xué)運(yùn)算

Script

#!/bin/bash
i=1
j=2
let k=i+j
echo k=i+j is: $k

let k++
echo k++ is: $k

let k--
echo k-- is: $k

k=$((i + j))
echo "(()) operator: $k"

k=$[i + j]
echo [] operator: $k

Note

  • 可以通過(guò) let, $(()), $[] 對(duì)變量進(jìn)行整形計(jì)算
  • bc 可以進(jìn)行浮點(diǎn)數(shù)計(jì)算

重定向文件描述符

Script

#!/bin/bash
file_name=/tmp/temp.txt
touch $file_name

echo "hello" > $file_name
ls + &> $file_name
echo "append" >> $file_name

ls + 2>> $file_name
ls . 1>> $file_name

Note

  • > 表示截?cái)啵?code>>> 表示在文件末尾追加
  • cmd < file 表示將 file 的內(nèi)容重定向?yàn)?stdin
  • 文件描述符 0,1,2 分別表示標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤

數(shù)組和關(guān)聯(lián)數(shù)組

Script

#!/bin/bash
array1=(1 2 3)
echo array1 is: ${array1[*]}

array2[0]=1
array2[1]=2
array2[2]=3
echo array2 is: ${array2[*]}
echo array2 length is: ${#array2[*]}

Note

  • 關(guān)聯(lián)數(shù)組通過(guò) declare -A map 聲明,在低版本的 bash 中不支持。

函數(shù)和參數(shù)

Script

#!/bin/bash
fn()
{
    echo '$0 is: '$0
    echo '$1 is: '$1
    echo '$2 is: '$2
    echo '$@ is: '$@
    echo '$* is: '$*
    return 10
}

fn 1 2
echo return value is: $?

Note

  • 注意函數(shù)參數(shù)已經(jīng)返回值的語(yǔ)法

將命令的輸出存到變量中

Script

#!/bin/bash
file_name=/tmp/tmp.txt
echo -e "1\n2\n3" > $file_name

cmd_output=$(cat $file_name)
echo $cmd_output

cmd_output=`cat $file_name`
echo $cmd_output
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • .bat腳本基本命令語(yǔ)法 目錄 批處理的常見(jiàn)命令(未列舉的命令還比較多,請(qǐng)查閱幫助信息) 1、REM 和 :: 2...
    慶慶慶慶慶閱讀 8,542評(píng)論 1 19
  • 第1章 小試牛刀 $ 是普通用戶,# 表示管理員用戶 root。 shebang:#!。sharp / hash ...
    巴喬書(shū)摘閱讀 6,684評(píng)論 1 4
  • 在shell中常用的特殊符號(hào)羅列如下: ; ;; . , / \ 'string'| ! $ ${} ...
    lupinwu閱讀 2,118評(píng)論 0 0
  • 基礎(chǔ) 頭文件 #!/bin/bash 或者#!/bin/sh #!約定的標(biāo)記,如IOS的Import 執(zhí)行文件時(shí)需...
    ZMJun閱讀 1,343評(píng)論 1 2
  • 壹版 我是一個(gè)不折不扣的敗家子,當(dāng)別人家的孩子都去打工掙錢(qián)的時(shí)候,我卻開(kāi)始了我的敗家之旅。 上初中,我是有絕對(duì)的自...
    淇水滺々閱讀 392評(píng)論 0 1

友情鏈接更多精彩內(nèi)容