我试图在 forloop 对象上运行 bash 命令,但它试图查找文件而不是使用 forloop 对象。
例子:
输入文件包含以下格式的行user:password
for item in $(cat myItems);do
USER = cat $item | cut -d ":" -f1
PASS = cat $item | cut -d ":" -f2
done
结果是它说文件 $item 未找到
我也尝试过
for item in $(cat myItems);do
USER = $(cat $item | cut -d ":" -f1)
PASS = $(cat $item | cut -d ":" -f2)
done
答案1
如果您确实需要为文件的每一行运行一些命令,您可以编写:
while IFS=: read -r user password rest_ignored; do
something with "$user" and "$password"
done < myItems
cat
是连接文件的命令,赋值语法var=value
周围没有空格=
。$(...)
可以在换行符上分割命令的输出,但前提是您设置$IFS
正确并禁用通配符。
答案2
这似乎实现了您所追求的目标,并保持了您最初想要的脚本方法。
$ cat myItems
user:pass
user2:pass2
$ for item in $(cat myItems);do
USER=$(echo $item | cut -d ":" -f1)
PASS=$(echo $item | cut -d ":" -f2)
echo user $USER pass $PASS
done
user user pass pass
user user2 pass pass2
$