1. 程式人生 > >[轉]linux shell 陣列建立及使用技巧

[轉]linux shell 陣列建立及使用技巧

linux shell在程式設計方面比windows 批處理強大太多,無論是在迴圈、運算。已經資料型別方面都是不能比較的。 下面是個人在使用時候,對它在陣列方面一些操作進行的總結。

1.陣列定義

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ echo $a
1

一對括號表示是陣列,陣列元素用“空格”符號分割開。

2.陣列讀取與賦值

  • 得到長度

[[email protected] ~]$ echo ${#a[@]}
5

用${#陣列名[@或*]} 可以得到陣列長度

  • 讀取

[chen[email protected] ~]$ echo ${a[2]} 
3

[[email protected] ~]$ echo ${a[*]} 
1 2 3 4 5   

用${陣列名[下標]} 下標是從0開始  下標是:*或者@ 得到整個陣列內容

  • 賦值:

[[email protected] ~]$ a[1]=100

[[email protected] ~]$ echo ${a[*]} 
1 100 3 4 5

[

[email protected] ~]$ a[5]=100     
[[email protected] ~]$ echo ${a[*]}

1 100 3 4 5 100

直接通過 陣列名[下標] 就可以對其進行引用賦值,如果下標不存在,自動新增新一個數組元素

  • 刪除:

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ unset a
[[email protected] ~]$ echo ${a[*]}

[[email protected] ~]$ a=(1 2 3 4 5)
[

[email protected] ~]$ unset a[1]   
[[email protected] ~]$ echo ${a[*]} 
1 3 4 5
[[email protected] ~]$ echo ${#a[*]}
4

直接通過:unset 陣列[下標] 可以清除相應的元素,不帶下標,清除整個資料。

3.特殊使用

  • 分片:

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ echo ${a[@]:0:3}
1 2 3
[[email protected] ~]$ echo ${a[@]:1:4}
2 3 4 5

[[email protected] ~]$ c=(${a[@]:1:4})
[[email protected] ~]$ echo ${#c[@]}
4
[[email protected] ~]$ echo ${c[*]} 
2 3 4 5

直接通過 ${陣列名[@或*]:起始位置:長度} 切片原先陣列,返回是字串,中間用“空格”分開,因此如果加上”()”,將得到切片陣列,上面例子:c 就是一個新資料。

  • 替換:

[[email protected] ~]$ a=(1 2 3 4 5)    
[[email protected] ~]$ echo ${a[@]/3/100}
1 2 100 4 5
[[email protected] ~]$ echo ${a[@]}
1 2 3 4 5
[[email protected] ~]$ a=(${a[@]/3/100}) 
[[email protected] ~]$ echo ${a[@]}     
1 2 100 4 5

呼叫方法是:${陣列名[@或*]/查詢字元/替換字元} 該操作不會改變原先陣列內容,如果需要修改,可以看上面例子,重新定義資料。

從上面講到的,大家可以發現linux shell 的陣列已經很強大了,常見的操作已經綽綽有餘了。

相關推薦

[]linux shell 陣列建立使用技巧

linux shell在程式設計方面比windows 批處理強大太多,無論是在迴圈、運算。已經資料型別方面都是不能比較的。 下面是個人在使用時候,對它在陣列方面一些操作進行的總結。 1.陣列定義 [[email protected] ~]$ a=(1 2 3 4 5)[[emai

linux shell自定義函數(定義、返回值、變量作用域)介紹

shel 自己 lai cell define ber article clas ner linux shell 可以用戶定義函數,然後在shell腳本中可以隨便調用。下面說說它的定義方法,以及調用需要註意那些事項。 一、定義shell函數(define function)

()Linux最常用指令快捷鍵 Linux學習筆記

.vimrc 如何 計算器 所有權 工作目錄 這樣的 正在 pts 詳細 Linux最常用指令及快捷鍵 Linux學習筆記 原文:http://blog.csdn.net/yanghongche/article/details/50827478 【摘自 鳥叔的私房菜】--轉

Linux epel源建立安裝詳細

建立epel源首先得保證能夠聯網 聯網看上一篇文章     記錄兩種方法如下    方法一: 編輯repo配置檔案 一:新建並編輯 Epel.repo倉庫       vi /etc/yum.repos.d/E

Linux shell 環境變數有效範圍

每當我們使用ssh客戶端遠端登陸一個服務時,作業系統就會給我們分配一個新的shell,並且這個shell繼承了作業系統的永久環境變數。在當前的shell執行一個sh檔案,都會臨時產生一個子shell,該檔案執行完畢後,將自動返回到父shell。 子shell會繼承父shell的所有永久環境變數和

C++ 二維動態陣列建立越界問題

目前VS2013不支援動態陣列,也就是int a[n], n必須是常量。建立動態陣列可以使用 new 的方法。比如建立一個二維動態陣列: int n; cin>>n; int **matrix=new int*[n];//matrix是一個存放指向

[]linux shell 獲取當前正在執行指令碼的絕對路徑

常見的一種誤區,是使用 pwd 命令,該命令的作用是“print name of current/working directory”,這才是此命令的真實含義,當前的工作目錄,這裡沒有任何意思說明,這個目錄就是指令碼存放的目錄。所以,這是不對的。你可以試試 bash shell/a.sh,a.sh 內

[]linux shell 流程控制(條件if,迴圈【for,while】,選擇【case】語句例項

linux shell有一套自己的流程控制語句,其中包括條件語句(if),迴圈語句(for,while),選擇語句(case)。下面我將通過例子介紹下,各個語句使用方法。 一、shell條件語句(if用法) if語句結構[if/then/elif/else/fi] if 條件測試語句

linux shell 陣列的長度計算、修改、迴圈輸出等操作

在shell中,陣列變數的複製有兩種方法: (1) name = (value1 ... valuen)此時下標從0開始 (2) name[index] = value example: #1/bin/sh #arrayTest name=(yunix yhx yfj)

學習Linux系統的態度技巧

開發十年,就只剩下這套架構體系了! >>>   

[work] Linux Shell中的陣列遍歷

在Linux下使用shell的時候,為方便起見,偶爾會用到一下陣列。陣列的申明方式是: [java] view plain copy array=(element1 element2 element3 .... elementN)   也就是直接用圓括號包陣列元素包起來,陣

Linux Shell(一):建立指令碼,變數、字串、陣列、輸入輸出

0.建立一個Shell指令碼: vim abc.sh 1.首行宣告所使用的shell: #!/bin/bash #!是一個特殊的識別符號,其後,跟著解釋此指令碼的shell路徑。 bash只是shell的一種,還有很多其它shell,如:sh,csh,ksh,t

[]linux系統建立SFTP使用者設定其chroot許可權

前言: 開發專案客戶要求與三方通過sftp互動檔案,我方系統部署sftp伺服器。考慮安全,計劃對提供給三方的使用者實現chroot控制 提供sftp本次選用的是系統自帶的internal-sftp。 限制使用者只能在home目錄下活動,需要使用ch

[+整理]linux shell 將字串分割成陣列

a="one,two,three,four" 要將$a分割開,可以這樣: OLD_IFS="$IFS" IFS="," arr=($a) IFS="$OLD_IFS" for s in ${arr[@]} do echo "$s" done

10個Linux Shell指令碼的面試題答案

首先致上每日問候。Linux的浩瀚無垠,使人總能每次都提交與眾不同的內容。我們“The-Tecmint-Team”的工作是給我們的讀者提供一些獨特的內容,這些內容不僅對他們的職業生涯很有用,同時也讓他們增長知識。在此,我們就嘗試這麼去做,至於能取得多大的成功,就由我們的讀者朋

linux shell單引號、雙引號無引號區別 【

3.描述linux shell中單引號、雙引號及不加引號的簡單區別(記時2分鐘) 簡要總結: 單引號: 可以說是所見即所得:即將單引號內的內容原樣輸出,或者描述為單引號裡面看到的是什麼就會輸出什麼。 雙引號: 把雙引號內的內容輸出出來;如果內容中有命令、變數等,會先把變

Linux Shell 腳本的小技巧——不定期更新

小技巧 linux shell 本文旨在積累平時寫 shell 腳本是遇到的小問題的解決方法。在這裏不定期的更新,以便以後查閱、沿用。 一,在shell 腳本中定義默認值 1. 對默認變量直接賦值 read -p "input>>:" nub nub=

linux--shell編程(三)條件判斷算術運算

寫一個腳本 head bsp 如何 cut inittab 引用 有用 color 練習:寫一個腳本判斷當前系統上是否有用戶的默認shell為bash; 如果有,就顯示有多少個這類用戶;否則,就顯示沒有這類用戶; #!/bin/bash # grep ‘\<ba

shell expect spawn、linux expect 用法小記 看著舒服點

ssh username 英文 認識 exe 無法找到 usr 過去 操作 使用expect實現自動登錄的腳本,網上有很多,可是都沒有一個明白的說明,初學者一般都是照抄、收藏。可是為什麽要這麽寫卻不知其然。本文用一個最短的例子說明腳本的原理。 腳本代碼如下:  #####

Linux修改Shell命令提示符顏色

br0 小時 spa 日期 背景顏色 red 24小時 信息 pan 1. Linux登錄過程中加載配置文件順序: /etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc