6,bash入门,for 循环, 编写最简单的脚本
? ? shell 是 一種 控制系統的腳本語言, bash 是 shell語言 的 解釋器 中 的 一種,也是 Linux 上 最流行的 的 一種, 不過 shell解釋器 有 很多種, 而且 每一種 都有 自己 的 特色, 不 是 完全 一樣 的。。, ??
????常見shell:
????????sh、csh、tcsh、bash、ksh、dash、zsh
bash 常用快捷鍵:
????Ctrl+a:????跳轉命令行首
????Ctrl+e:????跳轉命令行尾
????Ctrl+u:????刪除命令行首至當前光標所在處的內容
????Ctrl+k:???? 刪除當前光標所有處至命令行尾的內容
????Ctrl+l: ????清屏,相當于clear命令
????Ctrl+c: ????取消或終止
????Ctrl+z: ????將當前命令送至后臺執行
bash 命令補全
????按 "tab" 鍵 可 進行 命令 補全, 連按 兩下 可 顯示 命令 補全 列表, 這個 還是 很方便 的
編寫腳本,執行腳本:
????bash 腳本 是 以 “#! /bin/bash” 開頭 的, ?因為 bash 腳本 是 一種 解釋型 語言, 腳本 運行 時 需要 調用 解釋器 來 執行 代碼, "#!" 是 告訴 內核 這是 一個 腳本 文件, 后面 跟著 的 是 腳本 解釋器 的 路徑, 內核 會 調用 這個 解釋器 去 執行 腳本。
練習 : 寫 第一個 腳本 并 運行, 輸出 一句 Hello word!
這里 習慣 使用 vim 編輯器, 所以 就 用 vim 的 了, 不會的 也 可以 用 nano, 腳本文件 應該 以 ‘ .sh ’ 作為 結尾, 這個 說明 他 是一個 腳本。。, ?其實 以 普通 文件 寫 腳本 一樣 也是 可以 運行 的, 不過 可以運行 的 普通文件 一般會是 編譯好了的二進制程序,所以 還是 以 ‘ .sh ’ 結尾 把, 這個 是 大家 默認 的。
大概 就這樣 了, 簡單 把, 這里 的 ‘#’號 是 代表 注釋 的 意思, ‘#’ 號 后面 的 一句話 是 不會被 執行 的, 只有 ‘#!’ 和在一起 才表示 這是一個 腳本, 會被 內核 調用 bash解釋器 執行 的。
這個就是我編寫的腳本 a.sh ,首先檢查一下腳本有沒有語法錯誤
ok, 沒有 顯示 任何 信息, 說明 腳本 沒有 錯誤, 執行 腳本, 這里 有 兩種 方法可以 執行
方法1:????直接調用 bash解釋器 去 解釋 腳本
方法2:????給腳本添加一個可執行權限, 就可以直接執行腳本了, 不過 這里 需要 給出 腳本 的 準確 路徑, 不過 可以 通過修改 PATH 文件, 這樣 腳本 就可以 像 命令 一樣 執行 了。
這里 我 自己 添加 了 一個 './' 目錄, 這樣 就 可以 直接 執行 這個 腳本 了。。
bash 變量: ? ? ?有幾種: 本地變量,局部變量,環境變量,特殊變量,位置變量
1、本地變量:只對當前 shell 進程 有效,對其 子 shell 以及 其他 shell 都 無效
????????定義變量: [set]Var_Name="Value" ,set 是 定義 本地變量 的 關鍵字, 可省略 的默認定義 的 變兩個 就是 本地變量
????????引用變量: ${Var_Name}, 這里的 大括號 大多數情況 可以 省略
????????撤銷變量: unset Var_Name
????????顯示變量: 直接執行 set 可以 顯示 所有 本地變量
2、局部變量: ? 這個 應該 和 函數 有關 把, 這里 先不管 他。
????????定義變量: ? local Var_Name="Value"
3、環境變量:
????????定義變量: ? export Var_Name="Value"
????????顯示環境變量:?????export, env, printenv 這三個 命令 都 可以 顯示 環境變量,
4、位置變量
????????$1, ... , $n
????????這個 是 腳本 輸入 的 參數, 各個 參數 之間 是 以 空格 分隔 的, $1 就 表示 腳本 的 第一個 參數
5、特殊變量
????????$0????腳本名稱, 這個和變量位置差不多吧。
????????$?????上一條命令的執行狀態,?
????????????????????0表示 成功
????????????????????1-255 失敗。。
????? ? $#????查看命令之后有幾個參數
?后面 三個 不知道。。, 老師 沒講, 用到的 時候 再說 把。
??????? $$ ? ? ?
????????$!
????????$*???
ok, 寫了個 腳本 測試 一下 特殊變量 和 位置 變量, 大概 就 這樣 了。。
bash配置文件:
????bash 啟動 是 會 自動 執行 配置 文件 里面 的 一些 腳本, 用于 設置 一些 永久 的 屬性信息
? ? ? ? 1 profile類: 為交互式登錄的用戶提供配置,登錄系統時只執行一次,一會再運行bash會執行 了
????????????????/etc/profile ?: ?對所有用戶有效,一般用于管理員修改一些最基本的信息
????????????????/etc/profile.d/*.sh ? : 對所有用戶有效, 這個 文件夾 下 的 .sh 文件 都會 ????????????????????????????????????被 執行,用于 設置一些軟件的配置 之類 的
????????????????~/.bash_profile? ?:個人家目錄下也有 一個 這樣 的 配置文件, 不過 是隱藏的
????????bashrc類: 非交互式登錄用戶提供配置
?????? /etc/bashrc: 全局
~/.bashrc: 個人配置
通知shell重新讀取配置文件: source FILE, 如 source .bashrc 之類 的。
--------------------------------------------------------------
系統啟動時 配置文件讀取順序:
交互式登錄用戶:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登錄用戶:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
變量的命名要求:
只能使用數字、字母和下劃線組成;
不能以數字開頭;
不能使用程序中的關鍵字;
見名知義;totalWeight?
for循環:
這個是shell腳本中最常用的循環結構, 其他 還有 兩個循環結構, 分別是 while 和 until, 不過 這里 直說 for 循環。
語法:
for循環:
for var_Name in 列表; do
語句1
語句2
...
done
大概 語句結構 就是 這個 樣子 了, 其中 var_Name 表示 變量, in 后面 跟著 的 是一個 列表, for循環 就是 遍歷 這個 列表 的, 列表 后面 有 一個 ';', 這個 是 shell 中 的 語句分隔符, 后面 的 do 就是 另外 一個 語句 了, 也可 以 把 do 另起一行, 這樣 就 可以 省略 ';' 了, 如:
例1:
????????for I in 1 2 3 4 5 6 7 8 9
????????do
????????????????echo $I
????????done
說下 這個 例子 把。?
第一行, for 關鍵字 代表 這 是一個 循環 語句, 之后 的 I 是 一個 變量, 然后 in 表示 這個 變量 的 范圍, 后面 是 一個 列表, 意思 就是 I 變量 要 在 這個 列表 的 范圍 內,?
第二行, ?do 開始 執行 循環體 的 意思,
第三行, done 表示 循環 結束
ok, 下面 說 一下 怎樣 生成 列表 把, 這樣 手動 寫 列表 也是 很不爽 的 哈。
----------------------------------------------------
生成列表:
1 、 {1..9} ?花括號 生成, 這個 表示 生成 列表 1 到 9,繼續改一下上個腳本把。
這樣 看 上去 是不是 簡單 多 了 啊。
2、 使用 關鍵字 seq 生成 列表, ?語法 格式 為 ? seq 1 [步長] 9, 這里 也是 生成 1 到 9 , 中間 那個 步長 是 可以 省略 的, 步長 的 意思 是 每一步 的 長度, ?
如 seq 1 2 9 表示 1 3 5 7 9, 每次 都是 上一次 生成 的 數字 加上 步長
seq 還有 幾個 選項, 不過 不太常用。。
????????-s '字符', 這個 是 設定 分隔符, 默認 為 '\n' 的, 大概 能 用得著 的 就是 這個 了
????????????????這里 注意, 要 用 單個 字符 哦, 用 字符串 會 出現 另外 一種 情況 的,?
????????-f 這個 才是 可以 匹配 字符串 的 選項, 如圖:
這個 第三個 語句 也 可以 執行, 但 他 是 以 字符串 來 分隔 數字 的, 可能 不是 我們 要 表達 的 意思 把。 seq 用法 還有 一些, 這里 就 不多說 了, 。。
3、 說一下 列表 除了 手寫 之外, ls 之類 的 命令 也是 可以 生成 列表 的,不用 要用 `` 把 命令 引起來, 這個 都懂 把, 前面 有 說過 的。?
-----------------------------------------------
寫 一個 小 腳本 把, 都 說 這么 多 了, ..
添加100個用戶, user1 到 user 100, 將 用戶 的 密碼 設置 為 111111
就 是 這個 了, passwd 命令 這個 都 沒忘記 把, 反正 我 是 沒有, 其實 馬哥 領著 我們 練習 了好多 習題 的, 不過 這里 我 就 說了 幾個, 練習 還是 少 啊, 多練 多敲 才是 王道, 沒有 任何 捷徑 的。。。。
轉載于:https://blog.51cto.com/vrgfff/1572455
總結
以上是生活随笔為你收集整理的6,bash入门,for 循环, 编写最简单的脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 3061 (二分+前缀和or尺取
- 下一篇: 一 开始