你应该知道的 Shell 脚本的经典十三问

经典的Shell十三问:
  1. 为何叫做shell?
  2. Shell prompt(PS1)与Carriage Return(CR)的关系?
  3. 别人echo, 你也echo, 是问echo知多少?
  4. “”(双引号)与(单引号)有什么区别?
  5. var=value? export前后差在哪?
  6. exec跟source差在哪?
  7. ( ) 与 { } 差在哪?
  8. (()) 与() 还有 ${} 差在哪?
  9. @ 与* 区别在哪?
  10. && 与 || 差在哪?
  11. > 与 与 < 差在哪?**

– 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 脚本的经典十三问
%title插图%num
滚动到顶部