使用read命令來接受輸入
使用read來把輸入值分配給一個或多個shell變量
-p 指定要顯示的提示
-s 靜默輸入,一般用於密碼
-n N 指定輸入的字符長度N
-d ‘字符’ 輸入結束符
-t N TIMEOUT爲N秒
read 從標準輸入中讀取值,給每個單詞分配一個變量
所有剩餘單詞都被分配給最後一個變量
read -p “Enter a filename: “ FILE
bash如何展開命令行
1、將命令行傳入bash。
2、解析引用分割爲單個單詞:
shell中有3種引用方式:轉義、強引用和弱引用。
反斜線轉義:使得元字符變爲普通的字面字符。但這隻能對反斜線後一個字符進行轉義。
單引號強引用:單引號內的所有字符全部變爲字面符號符號。
雙引號弱引用:使雙引號內所有字符變爲字面符號,但"\"、"$"、"`"除外,如果使用"!"引用歷史命令時,則感嘆號也除外
[root@CentOS7 ~]# PWD=pwd
[root@CentOS7 ~]# echo $PWD
/root
[root@CentOS7 ~]# echo '$PWD'
$PWD
[root@CentOS7 ~]# echo "$PWD"
/root
[root@CentOS7 ~]# echo "$\PWD"
$\PWD
在解析引用後,shell會把命令分割單詞,分隔符包括:空格、tab、分號、管道符號、&、&&、||、重定向符號、圓括號等。
3、檢查命令行結構,是否有語法錯誤。
4、將命令行中的別名展開。在腳本中無法使用別名
5、展開聲明,將各種聲明中的語句展開並分割爲單詞。
shell對聲明的展開有規定的順序:
1)大括號展開:操作大括號中的語句,傳遞給命令並將結果替換
2)波浪號展開:替換爲用戶的家目錄
3)變量擴展:即操作和替換變量值
4))命令替換:此過程將執行命令替換中的命令,並將結果替換到單詞的對應位置處
5)進程替換:將進程的執行結果替換到對應位置。類似於命令替換
6)算術擴展:計算算術值,並將計算結果替換到對應位置處
7)文件名擴展:搜索匹配通配符條件的文件。
6、去除用於引用的引號。
7、執行命令,並返回退出狀態值。
Bash環境的配置
$-變量
h:hashall,打開這個選項後,Shell 會將命令所在的路徑hash下來,避免每次
都要查詢。通過set +h將h選項關閉
i:interactive-comments,包含這個選項說明當前的 shell 是一個交互式的
shell。所謂的交互式shell,在腳本中,i選項是關閉的。
m:monitor,打開監控模式,就可以通過Job control來控制進程的停止、繼
續,後臺或者前臺執行等。
B:braceexpand,大括號擴展
H:history,H選項打開,可以展開歷史列表中的命令,可以通過!感嘆號來完
成,例如“!!”返回上最近的一個歷史命令,“!n”返回第 n 個歷史命令
bash的配置文件
profile類:爲交互式登錄的shell提供配置
全局:/etc/profile, /etc/profile.d/*.sh
個人:~/.bash_profile
功能:(1) 用於定義環境變量(2) 運行命令或腳本
bashrc類:爲非交互式和交互式登錄的shell提供配置
```
全局:/etc/bashrc
個人:~/.bashrc
功能:(1) 定義命令別名和函數(2) 定義本地變量
配置文件在修改後,需要將其讀入內存才能生效,否則只能等待下一次重啓後生效
讀入內存:. 或者 source 配置文件。
Bash的兩種登陸方式
交互式登錄:
(1)直接通過終端輸入賬號密碼登錄
(2)使用“su - UserName” 切換的用戶
執行順序:/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登錄:
(1)su UserName
(2)圖形界面下打開的終端
(3)執行腳本
(4)任何其它的bash實例
執行順序: ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh