我有一个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'
答案 0 :(得分:1)
请注意,x
从未使用过;它只是一个虚拟变量,用于捕获您不需要的字段,因此read
执行的字段拆分会将所需的值分配给id
,path
和exec
_
更常用作此类虚拟对象。另外,最好只为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
.
.