簡體   English   中英

在 bash 腳本中的變量中收集外部腳本輸出

[英]Collect external script output in a variable in bash script

我是 bash 腳本的新手,但是在嘗試了幾種語法方法和研究之后,我在將外部腳本調用的結果存儲在我的 bash 腳本中時遇到了一些困難。 $r 在我回顯時沒有可見的值...

從命令行,它按預期工作:

 ./external-prog 23334
 echo $?
 2
#!/bin/bash

# build the command
c="./external-prog 23334"

# invoke command that returns an integer value
eval "$c"

#collect result in $r
r=$(eval "$?")

#see result
echo $r

看來您只想運行命令並檢索它的返回值,因此不需要 far eval

#!/bin/bash

# run the command
./external-prog 23334

#collect result in $r
r=$?

#see result
echo $r

您可以按如下方式進行,將外部腳本結果存儲在變量中:

c=$(./external-prog 23334)   
echo $c

這個序列$? 將返回最后一個進程的錯誤代碼而不是輸出。 看一下這個

$ echo ok; echo $?
ok
0

第一個回顯打印'ok',第二個打印0,這意味着命令成功。 非 0 代碼意味着發生了某種錯誤。

所以這

 ./external-prog 23334
 echo $?
 2

意味着external-prog失敗,錯誤代碼是 2,無論它意味着什么。 並將某些命令的輸出捕獲到 var 你需要這個

var=$(echo ok)
$ echo $var
ok

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM