shell变量之辨[4]

[函数,函数!]

#! /bin/bash
function func()
{
    echo "I am func";
    echo "xx" >& 2
    return $1
}

a=`func 1`;
echo "begin";
echo "$?";
echo "$a"
echo "end"
echo "----------"

echo "begin";
b=$(func 2);
echo "$?";
echo "$b";
echo "end";

1.  如何获得return的值?
答案: $?

2.  如何获得”echo”的值(I am func)
答案: “和$()

3.  echo “xx” >&2和echo “xx” >& 1是什么意思?
答案: 文件描述符, >& 1 表示输出至”标准输出”, >& 2 表示输出至”标准错误输出”
[神奇的文件描述符]
#! /bin/bash
echo -e "1\n2\n3\n4" > "$0.txt";
while read line		# 还有一种方式和此等价: cat 文件名 | while….
do
    echo "$line";
#   ssh "db-testing-ps1833.db01" "ls > /dev/null"
done < “$0.txt”	#注意<写在done后面, 而不是写在while一行之后

如果没有ssh这一行, 无疑结果就是输出1 2 3 4,分别一行

但是如果在循环中增加了ssh呢? 变成了只输出一行..what a f**king day…
这代表, 我们在循环的时候, 中途由于ssh命令, 导致后面的循环没有进行!
这一个错误非常隐蔽, 没有经验的同学再怎么看代码, 也会坚持认为自己的程序没有任何逻辑上的错误.
错误的原因不赘述, 如何解决? 且听下回分解


本文链接:https://www.poisonbian.com/post/211.html 转载需授权!

分享到:
原文链接:,转发请注明来源!
「shell变量之辨[4]」评论列表

发表评论