當我執行特定命令我獲得作爲輸出的2個值,如下所示:如何將特定的命令輸出保存到sh中的變量中?
2.056000 640.640015
我想只提取第二值,並將其分配給一個變量,以供以後使用。
任何人都可以幫助我嗎?
當我執行特定命令我獲得作爲輸出的2個值,如下所示:如何將特定的命令輸出保存到sh中的變量中?
2.056000 640.640015
我想只提取第二值,並將其分配給一個變量,以供以後使用。
任何人都可以幫助我嗎?
如果你想讓一個變量包含一個命令的結果,var=$(command)
是解決方案。
在你的情況,
your_var=$(your_command | awk '{print $2}')
您必須執行該命令,然後管它awk
,將獲得第二個參數。
Fedorqui的做法是好的,但提供一個替代的緣故:
your_command | read DONT_CARE YOUR_VAR IGNORE_ANYTHING_TRAILING
這有沒有需要運行一個子shell和awk的利益。經過測試併爲zsh工作。您不必擔心IGNORE_ANYTHING_TRAILING,但是接下來說your_command吐出1 2 3 4,YOUR_VAR會以「2 3 4」結束。
好主意。不得不說一個基本的'$ ls -l a |閱讀p'在bash中不適用於我。未設置'$ p'。 – fedorqui 2013-05-01 10:11:43
是的......我在cygwin中的舊bash shell也很奇怪:'echo 1 |讀x'不設置x,'讀-u 0 x'(stdin的描述符)沒有幫助,'cat |讀取x'不起作用,但如果我只是'讀取x'並輸入值,那麼它工作正常。管子以某種方式擰緊它。一些討論在http://stackoverflow.com/questions/2746553/bash-script-read-values-from-stdin-pipe-什麼是一個愚蠢的殼! ; -P – 2013-05-01 10:15:31
某些shell(特別是'bash')將在子shell中執行'read',因此在管道退出後該變量不可用。 POSIX標準只是說管道中的任何或所有命令都可以在子shell中執行;它不需要任何特定的行爲。 – chepner 2013-05-01 12:34:12
完美!非常感謝 ! – Paula 2013-05-01 09:58:07