📄 avoid-subshell.sh
字号:
#!/bin/bash# avoid-subshell.sh# 由Matthew Walker所提出的建议. Lines=0echocat myfile.txt | while read line; # (译者注: 管道会产生子shell) do { echo $line (( Lines++ )); # 增加这个变量的值 #+ 但是外部循环却不能访问. # 子shell问题. } doneecho "Number of lines read = $Lines" # 0 # 错误!echo "------------------------"exec 3<> myfile.txtwhile read line <&3do { echo "$line" (( Lines++ )); # 增加这个变量的值 #+ 现在外部循环就可以访问了. # 没有子shell, 现在就没问题了. }doneexec 3>&-echo "Number of lines read = $Lines" # 8echoexit 0# 下边这些行是这个脚本的结果, 脚本是不会走到这里的. $ cat myfile.txtLine 1.Line 2.Line 3.Line 4.Line 5.Line 6.Line 7.Line 8.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -