-2
我有一個腳本調用另一個腳本,但腳本的輸出似乎是錯誤的。下面是我的代碼:Ubuntu bash腳本輸出正確的值 - 一個腳本調用另一個腳本
print_output.sh
#!/bin/bash
echo $1
total=$(eval $1 | awk '{sum+=$1} END {print sum}')
echo "Total is $total"
try.sh
#!/bin/bash
./print_output.sh "ssh $1 'cd /somelocation/logs; cat data-$1.txt' | grep ..."
Usuage is: ./try.sh ukdry-01
我期望的輸出是:
uk
以及在這種情況下的「總計爲11」。但輸出顯示爲「cat data.txt」。
我哪裏去錯了?正如我期望的輸入是「ukdry-01」。 「cat data.txt」是一個從print_output.sh開始評估(即eval $ 1)並在腳本中執行的命令。
data.txt中包含例如
1 AUTH
2 AND
8 BOOLEAN
的想法是,總的被打印。該腳本將ssh發送給輸入到主機名的用戶,即ukdry-01,通過cat進入data-ukdry-01.txt,然後註銷並對所發現的數據執行grep。數據被過濾到print_output.sh中,它們都是整數,並打印出第一列。該usuage必須是腳本的名稱即./try.sh ukdry-01,其中在內部調用./print_output然後SSH命令等
在發佈的代碼中沒有任何'eval $ 1'。用實際的代碼重寫你的問題會更好,否則我們可能會解決錯誤的問題。 – janos
它確實看起來像它正在做的事情,你告訴它。字符串「cat data.txt」是進入'print_output.sh'的'$ 1'。所以這就是'回聲'。 – Jack
請注意'try.sh'腳本沒有使用它的任何參數,因此它只能通過巧合輸出與其第一個位置參數相同的字符串。 –