[英]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.