While循环与读入bash脚本

时间:2018-12-04 15:01:07

标签: bash while-loop sh

我有一个bash脚本

OLDIFS=$IFS
echo "Debugging: $1"
IFS=' '
frst=true
EXECPATH=$(file $1 | sed -r "s/^.*execfn: '([^']*)'.*$/\1/")
while read x id path x exec
do
    if [ $frst = true ];then
        frst=false
        path=$exec
    fi
.
.

有人可以解释while read x id path x exec是什么吗?我知道read会读取输出并将其分配给变量,但是为什么有两个x

脚本的调用方式类似于./myScrpt.sh 'ls filename'

1 个答案:

答案 0 :(得分:1)

请注意,x从未使用过;它只是一个虚拟变量,用于捕获您不需要的字段,因此read执行的字段拆分会将所需的值分配给idpathexec

_更常用作此类虚拟对象。另外,最好只为IFS命令覆盖read的值,而不是全局覆盖它(并尝试稍后再恢复)。

echo "Debugging: $1"
frst=true
EXECPATH=$(file "$1" | sed -r "s/^.*execfn: '([^']*)'.*$/\1/")
while IFS=' ' read _ id path _ exec
do
    if [ "$frst" = true ];then
        frst=false
        path=$exec
    fi
.
.