shell中 `` 與()問題請教 [論壇 - Ubuntu 程式設計]
正在瀏覽:
1 名遊客
shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員二級
![]() ![]() 註冊日期:
2015/11/16 9:07 所屬群組:
已註冊使用者 等級: 6
HP : 0 / 137
![]() |
您好:
請問在以下範例中, 1. sample1=('Jan' 'Feb' 'Mar' 'Apr' 'Jun' 'Jul' 'Aug') 他是 陣列初始化嗎? 我試著直接用 echo ${sanple1 2. sample2=(`echo "${sample1 他是指先`` 執行後,再() 執行一次嗎? ---------------------------- #!/bin/bash sample1=('Jan' 'Feb' 'Mar' 'Apr' 'Jun' 'Jul' 'Aug') IFS=$'\n' #利用單引號作區隔 sample2=(`echo "${sample1
2016/3/25 17:09
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
================================================ wayout 寫到: 先跳脫「Array」的用法,我們先來談「String」的用法,以下我會分好幾個回覆。 ## 範例一
## 範例二
上面兩個範例說明,「單引號(')」和「雙引號(")」,都是「字串(String)」, 至於有啥差別,就不在這裡討論,先聚焦在你想要使用的功能上面。 「範例一」和「範例二」都是顯示
## 範例三
## 範例四
上面兩個範例說明,你可以用for來跑迴圈,會將字串根據空白拆解。 所以「範例三」和「範例四」會顯示
2016/3/26 3:46
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
================================================= 延續上一個回覆的「String」用法,我們可以把「檔案內容」叫出來存成「字串」來「跑迴圈」。 先準備一個檔案,命名叫「one_line.txt」,內容如下,只有單純的一行
## 範例一
## 範例二
## 範例三
## 範例四
## 範例五
2016/3/26 3:49
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
==================================================== 這個回覆的範例,跟上面一個回覆的所有範例結果是一樣的,可以對照。 只是將「$()」改成「``」而已。 還記得之前的「討論」, 有提到
先準備一個檔,命名叫「one_line.txt」,內容如下,只有單純的一行
## 範例一
## 範例二
## 範例三
## 範例四
## 範例五
2016/3/26 3:52
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
================================================ 上面兩個回覆的範例,檔案只有單純一行,這個回覆的範例改用多行的檔案。 先準備一個檔,命名叫「list.txt」,內容如下,
## 範例一
## 範例二 注意:這個範例,結果是顯示一行 請對照「範例六」顯示多行的寫法
## 範例三
## 範例四
## 範例五
## 範例六 請對照「範例二」,區分其中的差異。
2016/3/26 3:54
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
============================================ 這個回覆的範例,跟上面一個回覆的所有範例結果是一樣的,可以對照。 只是將「$()」改成「``」而已。 先準備一個檔,命名叫「list.txt」,內容如下,一樣是多行的檔案
## 範例一
## 範例二 注意:這個範例,結果是顯示一行 請對照「範例六」顯示多行的寫法
## 範例三
## 範例四
## 範例五
## 範例六 請對照「範例二」,區分其中的差異。
2016/3/26 3:57
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
============================================= 接下來要談「sort」,不過要談「sort」之前,先來看幾個「printf」的範例 ## 範例一
## 範例二
上面兩個範例都會顯示多行
## 範例三
這裡只有顯示一行
2016/3/26 4:01
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
============================================== 真的要來談sort了, 請先執行「$ man sort」, 可以找到下面的文字
這裡討論要注意的是「sort lines」。 先準備剛剛有使用過的兩個檔案 一個檔,命名叫「one_line.txt」,內容如下,只有單純的一行
另一個檔,命名叫「list.txt」,內容如下,
接下來看範例 ## 範例一
顯示
## 範例二
顯示
因為「one_line.txt」只有一行,還記得上面提到的「sort - sort lines of text files」。 ## 範例三
顯示
這裡一樣顯示只有一行,同「範例二」。 ## 範例四
顯示
還記得上一個回覆提到的「printf」的用法嗎? 「範例四」將「範例三」改用「printf」,將「一行」轉成「多行」,再拋給「sort」去處理排序。 注意:以上討論的用法,都還是在「String」的範疇喔,下面開始才是要討論「Array」。
2016/3/26 4:08
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
===================================== 接下回到你原本想要問的「Array」 注意: 下面的範例「[」,「*」,「]」,這兩兩間隔是沒有空白的, 因為排版會跑掉,所以我加了空白, 測試的時候,請將空白移除。 ## 範例一
顯示
「${LIST[ * ]}」這個語法,就是列出陣列所有元素,不過echo出來會是只有一行。 ## 範例二
顯示
透過「printf」轉成多行。 ## 範例三
顯示
一樣透過「printf」轉成多行,然後再丟給「sort」處理排序。 ## 範例四
存取每個元素的語法。 以上回覆,應該可以建立一些基本的概念,幫助你了解一些疑惑, 下面一個回覆,再來針對你的問題個別做解答。 更多請參考「Bash Handbook / Arrays」。 或是「$ man bash」 查尋「Arrays」,可以找到下面一段
也可以查詢「printf」,可以看到下面一段
2016/3/26 4:16
|
||||||||||
![]() |
回覆: shell中 `` 與()問題請教 |
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
會員五級
![]() ![]() 註冊日期:
2012/4/22 10:50 所屬群組:
已註冊使用者 等級: 37
HP : 0 / 905
![]() |
備份連結
============================================================== 注意: 下面的範例「[」,「*」,「]」,這兩兩間隔是沒有空白的, 因為排版會跑掉,所以我加了空白, 測試的時候,請將空白移除。 ============================================================== wayout 寫到: 你上面的字拼錯了,「m」拼成「n」, 也就是「sample1」拼成「sanple1」,兩個變數名稱不一致,所以沒有資料。 改成下面的就可以了
============================================================== wayout 寫到: 依據你給的範例,拆解成下面的步驟,你就比較清楚了 ## 範例一
顯示
顯示一行,即使你有改「IFS」。 ## 範例二
顯示多行
用「雙引號」把「${sample1[ * ]}」括起來,就會顯示多行了 ## 範例三
因為是多行,所以可以丟給「sort」處理排序。 所以就顯示排序過後的結果
## 範例四
顯示
## 範例五
顯示
============================================================== ## 範例六 這個範例的邏輯跟「範例五」,是一樣的,只是「``」改成「$()」的寫法而已
顯示
2016/3/26 9:12
|
||||||||||
![]() |
您可以查看帖子.
您不可發帖.
您不可回覆.
您不可編輯自己的帖子.
您不可刪除自己的帖子.
您不可發起投票調查.
您不可在投票調查中投票.
您不可上傳附件.
您不可不經審核直接發帖.