小编Teo*_*giu的帖子

使用 bash 脚本从 .CSV 文件打印多个值

所以我的目标是从 .csv 文件打印多个值。我正在尝试找到一种方法,以尽可能短的运行脚本时间尽快完成。

例如,我有一个名为“test.csv”的文件。在“test.csv”中,我有以下值:

0,1673466134,875601111928832,3336977422,22610058C2740,2020-06-03,19:00:01,103,456123489478512
0,6987507655,226102200333225,2312147777,226102E1858F0,2020-06-02,19:00:04,102,112323548998726
0,7891328975,250423212127644,7421354899,22610058C5350,2020-06-01,19:00:00,103,123123489784238
1,1324654889,784502311776287,4778994563,22610058C351E,2020-06-09,19:00:01,102,489123478941324
0,1231324474,247122410577385,1232498779,22610058C53A0,2020-06-07,19:00:00,104,123498715234789
1,4471222598,226912478523771,4123487987,226102C242C40,2020-06-04,19:00:00,103,789123418971354
Run Code Online (Sandbox Code Playgroud)

我需要打印以下值:

例如:计算第一列中为“1”的所有值我会这样做:

cat test1.csv | awk -F ','  '{print $1}' | awk '/^1/' | wc -l
Run Code Online (Sandbox Code Playgroud)

例如:总结第 8 列的所有值,其中第 1 列 = 1

cat test1.csv | awk -F ','  '{print $1,$8}' | awk '/^1/' | awk '{sum+=$2} END {print sum}'
Run Code Online (Sandbox Code Playgroud)

而这样的例子不胜枚举。我有大约 11 个命令可以像上面的命令一样运行。我的目标是将所有这些命令包含在一个脚本文件中,并让它们尽快执行。

我制作了一个看起来像这样的脚本:

#!/bin/bash
while IFS=, read col_1 col_2 col_3 col_4 col_5 col_6 col_7 col_8 col_9
do
        echo "No of lines containing 0 on the 1st column: "
           awk …
Run Code Online (Sandbox Code Playgroud)

bash shell-script

3
推荐指数
1
解决办法
1206
查看次数

即使命令错误,为什么退出代码为 0?

我正在 bash 脚本中测试不同的东西,但我遇到了一个无法解释的问题。

我故意写了一个错误的命令,以获得不同于 0 的退出代码,但不知何故,我似乎仍然得到 0。

我正在执行的代码是:

USER_NAME=$(id -uns)

if [[ ${?} -ne 0 ]]
then
    echo "Your command failed to execute with exit code ${?}"
    exit 1
fi
echo "Your username is ${USER_NAME}"
Run Code Online (Sandbox Code Playgroud)

我的代码的输出是:

id: 未知选项 -- s

尝试“id --help”以获取更多信息。

您的命令无法执行,退出代码为 0

您的用户名是

我猜它以某种方式显示了 echo 命令的退出代码?即便如此,如果退出码为0,为什么会进入if语句呢?

如果是这样,那么我怎样才能让它显示应该显示的实际退出代码?

shell bash shell-script exit-status

0
推荐指数
1
解决办法
463
查看次数

标签 统计

bash ×2

shell-script ×2

exit-status ×1

shell ×1