我不知道为什么在运行脚本时我得到额外的use Closure, Session, Auth, App;
class LocaleMiddleware {
public function handle($request, Closure $next){
if(Auth::user() ){
App::setlocale(Auth::user()->lang);
}elseif($locale = Session::has('lang')){
$local = Session::get('lang');
App::setlocale($local);
}
return $next($request);
}
}
。
这是我的脚本:我运行SQL查询并将其保存为文件0
。
这是我的数组:valor.txt
array=(50 60 70)
:
Valor.txt
代码:
count | trn_hst_id | trn_msg_host
-------+------------+--------------
11 | 50 | Aprobada
2 | 70 | Aprobada
(2 rows)
这是我的输出。
function service_status {
cd
cat valor.txt | grep $1 | gawk '{print $1}' FS="|" | sed "s/ //g"
if [ $? -eq 0 ]; then
echo -n 0
else
echo -n $1
fi
}
echo "<prtg>"
# <-- Start
for i in "${array[@]}"
do
echo -n " <result>
<channel>$i</channel>
<value>"
service_status $i
echo "</value>
</result>"
done
# End -->
echo "</prtg>"
exit
为什么我在这里获得<prtg>
<result>
<channel>50</channel>
<value>11
0</value>
</result>
<result>
<channel>60</channel>
<value>0</value>
</result>
<result>
<channel>70</channel>
<value>2
0</value>
</result>
</prtg>
? -
0
答案 0 :(得分:1)
如果我理解你的评论,你想打印计数。这是count
列的值(如果valor.txt
中存在),如果trn_hst_id
中的array
不在valor.txt
中,则为0。这应该有效(虽然没有经过测试):
function service_status {
val=$(cat ~/valor.txt | grep $1 | gawk '{print $1}' FS="|" | sed "s/ //g")
# ^^ so you don't need to "cd" each time
# Save the value into "$val"
echo -n "${val:-0}" # If there is nothing in $val, print a 0
}
"${val:-0}"
序列扩展为"$val"
,如果$val
中有文字,则为0
。如果$1
中valor.txt
不在$val
,:-
将为空,那么您将获得零。有关{{1}}和朋友如何工作的详情,请参阅the wiki。
答案 1 :(得分:1)
“{”是在echo -n 0
命令正常工作(通常是这种情况)的情况下在函数内执行的awk
的结果。
从代码中不清楚为什么它是这样编写的。很明显,应该从文件中提取某些值,但是'if'条件似乎是检查错误的东西,'sed'的返回代码我打赌不是预期的。 (更好的候选人将是'grep'的返回代码。
所以我会写这样的函数:
function service_status {
cd
var=$(cat valor.txt | grep $1 | gawk '{print $1}' FS="|" | sed "s/ //g")
if [ -z "$var" ]; then
echo -n 0
else
echo -n "$var"
fi
}
变量'var'将包含“搜索命令”的结果。如果搜索不返回任何值,那么'var'将为空,'0'将是函数的输出,否则'var'的内容将在输出上。