gpt4 book ai didi

linux - 重定向到 bash 中存储 awk 的变量

转载 作者:太空狗 更新时间:2023-10-29 11:07:57 26 4
gpt4 key购买 nike

cat list.txt

1 苹果 4 30 f
2 土 bean 2 40 伏
3 橙色 5 10 f
4 葡萄 10 8 f

脚本:获取列表::

if  [[ "$@" == *[f]* ]] ; then
awkv1 = $(grep f | awk '{ print $2 $3 }')
else
awkv1 = $(awk '{ print $2 $4 $5 }')
fi

cat list.txt | $(awkv1)

我有一个变量 awkv1,它根据参数“f”存储值。但它不起作用。运行::getlist f 不会执行任何操作。

它应该像这样工作::如果在参数中传递了 'f' 那么::cat list.txt | grep f | awk '{ print $2 $3 }'

否则::cat list.txt | awk '{ print $2 $4 $5 }'

最佳答案

将部分命令行存储在字符串变量中更容易出错,最好使用 bash 数组。

您可以像这样调整您的脚本:

#!/bin/bash

# store awk command line in an array
if [[ "$*" == *f* ]]; then
awkcmd=(awk '/f/{ print $2, $3 }')
else
awkcmd=(awk '{ print $2, $4, $5 }')
fi

# execute your awk command
"${awkcmd[@]}" list.txt

关于linux - 重定向到 bash 中存储 awk 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35666545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com