命令 history 1 | { read x cmd; echo “$cmd”; } 的理解(筆記)

在優化history查資料的時候遇到了history 1 | { read x cmd; echo “$cmd”; } 這個命令,對於read命令的瞭解,僅限於在shell腳本中使用read -p,對於這種用法從來沒用過,更不知道它的含義,今天抽時間研究了一番,以作記錄

1)如果回車後輸入的字符和變量名數量一樣,那麼就相當於給變量一個一個的賦值了。

[centos@localhost ~]$ read x y z
1 2 3
[centos@localhost ~]$ echo $x
1
[centos@localhost ~]$ echo $y
2
[centos@localhost ~]$ echo $z
3
[centos@localhost ~]$


2)如果兩者的數量不一樣
      a)當輸入的字符數量多時,它只對應前面的,最後一個變量名對應剩餘的部分

[centos@localhost ~]$ read m n
4 5 6 7
[centos@localhost ~]$ echo $m
4
[centos@localhost ~]$ echo $n
5 6 7
[centos@localhost ~]$

      b)如果輸入的字符數量少時,沒有對應的變量名對應的就是空值

[centos@localhost ~]$ read i j k
8 9
[centos@localhost ~]$ echo $i
8
[centos@localhost ~]$ echo $j
9
[centos@localhost ~]$ echo $k

[centos@localhost ~]$

再看命令:

history 1 | { read x cmd; echo “$cmd”; }

管道前面,history 1表示取最後一條命令。

管道後面‘{ }’內是一整體,相當於一個函數,函數裏面可以有多條命令,用分號分割,而且最後一條命令也必須加分號。第一條命令和‘{‘之間必須要有空格。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章