[函数,函数!]
#! /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 表示输出至”标准错误输出”
答案: 文件描述符, >& 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 转载需授权!