我正在为客户清理用户数据库。我有需要访问的用户列表,并且正在检查他们是否拥有他们在删除之前创建的任何媒体。
这是一个非常简单的脚本,问题相对较小。我确定它很明显,我似乎无法弄明白。
12 while read each;
13 do
14
15 query=$(mysql -u$username -p$password $database -e "select uid,nid,title from node where uid like '$each' limit 1;")
16 if [[ -z $query ]]
17 then query="No nodes"
18 fi
19 if [[ -z $query ]]
20 then query="Error"
21 fi
22 echo -n "$each"
23 echo -n " - "
24 echo "$query"
25 done <$source_file
我遇到的问题在第22行。我希望源文件中的每个UID都有一行,格式如下:
UID - Query results
我遇到的问题是回显$each
只有当它是该行上的唯一参数时才有效。在上面的示例中,结果如下所示:
- Query results
(原谅引号,但如果我不引用连字符,连字符将被解释为此论坛的子弹。)
如果我将多个变量或其他任何内容放在与第一个echo命令相同的行上,则$each
变量将返回空。它只显示变量的内容,如果它在它自己的行上,或者看起来如此。
更多信息:
$each
变量是一个整数(从文件中读取)
我解析它并不重要 - IE,如果我输入newvar="$each - $query"
然后echo $newvar
,则会发生同样的事情。
上面有一点误导性的评论。 echo "$each "
(带有拖尾空格)覆盖$each
中整数的一个数字。
如果我将echo -n "$each"
行放在代码的前面(do
之后但是在mysql查询之前),则数字显示在输出的底部,就像一个自动收报机磁带。这是迄今为止我最奇怪的部分,如果有帮助,我可以提供截图。
答案 0 :(得分:1)
$each
最后有一个CR。在使用变量之前将其剥离。