我看到了以下shell脚本。我认为我基本上知道它在做什么,但我仍然不明白为什么要使用这么多的重定向和文件描述符?例如,
exec 3>&1
,do something 2>&1 1>&3
和exec 3>&-
的目的是什么。#-Open file descriptor (fd)
exec 3>&1
#-Create a form and then store data to $VALUES variable
VALUES=$(dialog \
--keep-tite \
--ok-label "Submit" \
--backtitle "Linux User Managment" \
--title "Useradd" \
--form "Create a new user" \
15 50 0 \
"Username:" 1 1 "$user" 1 10 10 0 \
"Shell:" 2 1 "$shell" 2 10 15 0 \
"Group:" 3 1 "$groups" 3 10 8 0 \
"HOME:" 4 1 "$home" 4 10 40 0 \
2>&1 1>&3)
# close fd
exec 3>&-
# display values just entered
echo "$VALUES"
能否告诉我为什么它们是必要的?是因为正在使用的dialog
工具吗?我问这个问题是因为我从未见过人们在简单命令(如ls
等)中这样做。
exec 3>&1
ls 2>&1 1>&3
exec 3>&-