日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

shell脚本1——变量 $、read、``

發布時間:2023/12/1 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shell脚本1——变量 $、read、`` 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

與Shell變量相關的幾個命令:

變量只在當前Shell中生效.

source 這個命令讓腳本影響他們父Shell的環境(. 可以代替source命令)

export 這個命令可以讓腳本影響其子Shell的環境? ()

unset 從環境中刪除變量

?

其他幾個與變量有關的命令:

declare: 用于顯示或設置變量

let: 用于求整數表達式的值

local: 用于創建不能傳給子Shell的變量, 這個命令僅在過程內部有效

readonly: 用于顯示或者設置只讀變量

set: 用于設置或者重置各種Shell選項(不僅用于變量)

shift: 用于移動位置變量

typeset: 用于顯示或者設置變量(同declare)

?

變量賦值

logfile="stdout.log" echo "$logfil"

1、變量賦值——沒有類型,根據賦值的類型決定變量類型,可以多次隨意賦值。賦值號兩邊不能有空格

1)顯示定義:VAR=value

變量聲明時使用的引號不會被保留,當變量值中有空格時必須使用引號

2)讀取:read VAR

      • 一次讀入一行!?可以一次讀入多個變量read。

        • read firstname lastname 輸入:steve Parker Smith 以空格分,最后一個變量兩個 輸入:steve 給的少,后一個變量為空字符串,一直存在于shell中,可以在當前shell中用set | grep name=查看
      • 從文件讀入
        • read password < /etc/passwd讀入一行 while read passwd doecho $passwd done < /etc/passwd一直循環讀,直到不再輸入
      • read -p “what file do you want to test?" filename 命令替換:
    • 命令賦值:VAR=`date`、 VAR=$(date)
    • 數值計算:c=`expr $a +4`、c=let $a + 4 ?、$(($a+$b))  但也有點區別:有的shell不支持,是否有對非數值進行的先驗(expr沒有)
  • 將變量值設置為某個給定命令的輸出,其時是第一種賦值方式的變種
    • TODAY=`date +%A`動態賦值

?

引用變量

2、引用變量——的格式是${變量名} ? $(variable)bar ? ?echo $variable bar ${variable}bar

訪問不存在的變量只會返回空字符串或0,具體取決與上下文,所以當將某個變量名寫錯時,不會報錯,還能有結果;?

變量名區分大小寫

?

3、支持一維數組變量:

[lixn@localhost ~]$ Users=(zsan lisi wangwu zhangsan lisi)  定義一維數組 [lixn@localhost ~]$ echo $Users                  索引 zsan [lixn@localhost ~]$ echo ${Users[0]} zsan [lixn@localhost ~]$ echo ${Users[2]} wangwu [lixn@localhost ~]$ echo ${Users} zsan [lixn@localhost ~]$ echo ${Users[*]} zsan lisi wangwu zhangsan lisi [lixn@localhost ~]$ echo ${#Users[*]}       返回數組長度 5 [lixn@localhost ~]$ echo ${#Users[2]}       返回元素值的長度 6 [lixn@localhost ~]$ Users[1]=wlm          修改值 [lixn@localhost ~]$ Account=(${Users[*]})     數組之間賦值 [lixn@localhost ~]$ echo ${Account[*]} zsan wlm wangwu zhangsan lisi

?

特殊變量

${#var}?變量的長度

特殊變量由bash自動定義和賦值,用戶不能修改。

$$:當前進程號

$?:前一個命令的退出狀態,0表示執行成功,1標志執行失敗

$0:存儲命令本身——位置參數

$1-$n:依次代表命令行參數,當大于9時,用{}括起來,如${10}——位置參數

$#:命令行參數的個數,不包括命令本身

$*:保存了全部的命令行參數。不包含命令本身 $@

$!:后臺程序的pid

?

其他

basename命令——去掉位置參數的路徑信息,所以./scropt.sh、/usr/local/bin/script.sh等會被轉化為script.sh

Myname is `basename $0`

shift命令——多用于“下一個參數”,shift內置命令每次調用時將所有參數進行一次移位,首先截去$1,然后截去$2....無法將移位逆向進行。

    shift也可以一次截去多個變量(shift 3 ?或者 ?shift shift shift)多用后者

#!/bin/bash echo "My name is `basename $0` - I was called as $0" echo "I was called with $# parameters." count=1 while [ "$#" -ge "1" ]; doecho "Parameter number $count is: $1"let count=$count+1shift done[lixn@Fedora24 bash_learn]$ ./shift.sh My name is shift.sh - I was called as ./shift.sh I was called with 0 parameters. [lixn@Fedora24 bash_learn]$ ./shift.sh one two three My name is shift.sh - I was called as ./shift.sh I was called with 3 parameters. Parameter number 1 is: one Parameter number 2 is: two Parameter number 3 is: three

$*和$@的使用與區別

?

刪除變量——unset myvar;將變量賦值為空字符串也能實現變量的刪除,但與unset不完全相同

?

轉載于:https://www.cnblogs.com/daduryi/p/6627660.html

總結

以上是生活随笔為你收集整理的shell脚本1——变量 $、read、``的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。