bash - 在 bash 脚本中读取的 While 循环
问题描述
我有一个 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'
解决方案
请注意,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
.
.
推荐阅读
- css - 已处理的 SASS 文件缺少来自自定义 mixin 的供应商前缀
- java - Java 应用程序的 100% CPU 利用率
- build - 如何在 Meson Build 系统中将文件传递给子项目
- paypal - PayPal 辅助帐户创建无效的 client_id 或 redirect_uri
- android-studio - 安装后无法打开 Android Studio
- python - 使用单个元素或列表作为值构建字典
- arrays - 如何按值对打字稿中的数组进行排序
- postgresql - 使用 postgres 存储后端时,Vault 报告缺少客户端令牌
- python - 使用 python 请求获取网站登录的同意 cookie (CMP euconsent-v2)
- unit-testing - 单元测试 FastAPI CRUD 无法按预期工作