【发布时间】:2018-09-28 14:53:53
【问题描述】:
所以,我正在尝试使用 bash 脚本自动创建用户。我有下面的脚本:
#!/bin/bash
cd /tmp/new/
cat autoid`date +%Y%m%d`.csv | grep "THING" | grep "4B"
while read -r line;
do
name=$(awk -F';' '{print $10}' | awk -F' ' '{print $1}')
surname=$(awk -F';' '{print $10}'|awk '{for (i=2; i<NF; i++) printf $i " "; print $NF}')
userid=$(awk -F';' '{print $8}')
bash new_user.sh $userid $name $surname
sleep 1
bash basic_access.sh C $userid
sleep 1
done
问题是我在这里有点困惑。我正在使用 echo 测试命令,而不是调用其他 bash 脚本,除了 "cat autoiddate +%Y%m%d.csv | grep "THING" | grep "4B"" 行的输出之外,它没有返回任何内容.试图将此行的末尾流水线到 while 循环,但它无论如何都不起作用。
我在这里做错了什么?
【问题讨论】:
-
read -r line应该读取什么内容?用于设置name等的各种awk命令是什么?应该读什么? -
@chepner 我正在尝试读取以分号作为分隔符的 csv 文件。变量(名称、姓氏、用户 ID)中的代码工作正常,问题是,我如何将“cat autoid
date +%Y%m%d.csv | grep "THING" | grep "4B"" 的输出发送到其他命令,逐行。
标签: bash shell while-loop