我有一个调用另一个脚本的脚本,但脚本的输出似乎是错误的。以下是我的代码:
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
" Total是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,它们都是整数,并打印出第一列的总和。用法必须是脚本名称,即./try.sh ukdry-01,在内部调用./print_output,然后调用ssh命令等。
答案 0 :(得分:0)
以下是对我有用的内容:
try.sh
#!/bin/bash
./print_output.sh $@ "ssh $1 'cd /somelocation/logs; cat data-$1.txt' | grep ..."
Usuage is: ./try.sh ukdry-01
$ @复制位置参数,我可以将ukdry-01用作$ 1.