1. 程式人生 > >這個命令你看得懂麽

這個命令你看得懂麽

使用 變量賦值 hist 腳本 輸入 變量 pre echo 字符

直接上命令

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

對於read命令的了解,僅限於在shell腳本中使用read -p,對於這種用法從來沒用過,更不知道它的含義。

今天抽空琢磨了一下,終於搞明白了來龍去脈。先來寫幾個命令吧:

# read a b c
1 2 3
# echo $a
1
# echo $b
2
# echo $c
3
# read x y
1 2 3
# echo $x
1
# echo $y
2 3

到這,也許你似乎看出一些門道了。read命令,後面跟的是變量名,可以是1個,也可以是多個,用空格分隔。回車後,輸入的字符就是在給這些變量賦值,輸入的字符串也需要用空格分隔,如果和上面的變量名一個一個地對應,那麽這樣就一個一個地賦值了。

如果沒有對應呢?通過上面的命令也可以發現,如果值比變量多,它只對應前面的。例如,變量只有x和y,而值是1 2 3,則它把x賦值1,後面的2 3一股腦賦值給最後面的變量y。

再來一個例子吧。

# echo 1 2 3 4 5|read a b c
# echo $a
1
# echo $b
2
# echo $c
3 4 5

再回頭看這條命令:
history 1 | { read x cmd; echo “$cmd”; }

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

這個命令你看得懂麽