经典的Shell十三问:
- 为何叫做shell?
- Shell prompt(PS1)与Carriage Return(CR)的关系?
- 别人echo, 你也echo, 是问echo知多少?
- “”(双引号)与(单引号)有什么区别?
- var=value? export前后差在哪?
- exec跟source差在哪?
- ( ) 与 { } 差在哪?
- (()) 与() 还有 ${} 差在哪?
- @ 与* 区别在哪?
- && 与 || 差在哪?
- > 与 与 < 差在哪?**
– 0: Standard Input (STDIN)
– 1: Standard Output (STDOUT)
– 2: Standard Error Output (STDERR)
我们可用 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案。
ls my.file no.such.file 1> file.out 2>file.err
# 2>&1 就是将stderr并进stdout做输出
ls my.file no.such.file 1> file.out 2>&1
# /dev/null 空
ls my.file no.such.file >/dev/null 2>&1
cat < file > file
# 在 IO Redirection 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料。
# 也就是说,在上例中,> file 会先将 file 清空,然后才读进 < file ,
# 但这时候档案已经被清空了,因此就变成读不进任何数据了
12. 你要if还是case呢?
# if
echo -n "Do you want to continue?(Yes/No):"
read YN
if [ "YN"=Y -o "YN"=y -o "YN"="Yes" -o "YN"="yes" -o "YN"="YES"];then
echo "continue"
else
exit 0
fi
# case
echo -n "Do you want to continue?(Yes/No):"
read YN
case "YN" in
[Yy]|[Yy][Ee][Ss])
echo "continue"
;;
*)
exit 0
esac
13. for what? while与until差在哪?
# for
for ((i=1;i<=10;i++))
do
echo "num is i"
done
# while
num=1
while [ "num" -le 10 ]; do
echo "num is num"
num=((num + 1))
done
# until
num=1
until [ "num" -gt 10 ]; do
echo "num is num"
num=(($nu + 1))
done
- break 是结束 loop
- return 是结束 function
- exit 是结束 script/shell
原文:https://www.cnblogs.com/rustling/p/9833174.html
本文链接:http://www.yunweipai.com/41092.html
你应该知道的 Shell 脚本的经典十三问