在我的shell脚本中,我有以下行
PO_list=$(awk -v col="$1" -F";" '!seen[$col]++ {print $col}' test.csv)
生成一个列表,其中包含来自文件test.csv的“$ 1”列中的值“col”。 也许有可能在同一个位置有几个文件,因此需要用句子循环它们。为此,我必须用变量$ i替换文件名test.csv,例如,这是文件列表中的索引。
试图满足我的要求,我正在用
修改我的行PO_list=$(awk -v col="$1" -F";" '!seen[$col]++ {print $col}' $j)
不幸的是,我收到错误消息:
awk:无法打开test.csv(没有这样的文件或目录)
任何人都可以告诉我为什么会出现这种错误,我该如何解决呢?
谢谢,
答案 0 :(得分:2)
正如您在上一个问题中所评论的那样,您正在使用
进行调用abc$ ./test.sh 2
所以你只需要在调用它时添加另一个参数:
abc$ ./test.sh 2 "test.csv"
并且脚本可以是这样的:
PO_list=$(awk -v col="$1" -F";" '!seen[$col]++ {print $col}' "$2")
# ^^^^
每当您想要使用其他参数时,请记住它们是位置的。因此,第一个是$1
,第二个是$2
,依此类推。
如果文件恰好位于另一个目录中,您可以用./test.sh 2 "test.csv"
或类似的相对路径替换./test.sh 2 "/full/path/of/test.csv"
。