对 for 循环对象的 BASH 操作

Ant*_*ell 0 shell-script

我正在尝试在 forloop 对象上运行 bash 命令,但它正在尝试查找文件而不是使用 forloop 对象。

例子:

输入文件包含以下格式的行 user:password

for item in $(cat myItems);do
        USER = cat $item | cut -d ":" -f1
        PASS = cat $item | cut -d ":" -f2
done
Run Code Online (Sandbox Code Playgroud)

这样做的结果是它说找不到文件 $item

我也试过

for item in $(cat myItems);do
        USER = $(cat $item | cut -d ":" -f1)
        PASS = $(cat $item | cut -d ":" -f2)
done
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 5

如果你确实需要为文件的每一行运行一些命令,你会写:

while IFS=: read -r user password rest_ignored; do
  something with "$user" and "$password"
done < myItems
Run Code Online (Sandbox Code Playgroud)

cat是连接文件的命令,赋值语法var=value周围没有空格=$(...)可以在换行符上拆分命令的输出,但$IFS前提是您正确设置并禁用通配符。