gpt4 book ai didi

linux - 运行 bash 脚本时出现 Bash 错误太多参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:07:31 24 4
gpt4 key购买 nike

我正在尝试编写一些在目录中可用的基于逻辑的 avro 文件

但是我收到太多参数错误。

 [cloudera@client01 scripts]$ hdfs dfs -ls /user/cloudera/output_files/file_date_2017-04-06

Found 11 items
-rw-rw---- 2 cloudera cloudera 0 2017-04-24 13:57 /user/cloudera/output_files/file_date_2017-04-05/_SUCCESS
-rw-rw---- 2 cloudera cloudera 781714 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00000-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro
-rw-rw---- 2 cloudera cloudera 782132 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00001-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro
-rw-rw---- 2 cloudera cloudera 782467 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00002-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro
-rw-rw---- 2 cloudera cloudera 785117 2017-04-24 13:56 /user/cloudera/output_files/file_date_2017-04-05/part-r-00003-7e1d4e4e-9166-4744-b73b-095a7cc0e090.avro

当我应用以下 if 条件时,出现以下错误。

[cloudera@client01 scripts]$ if [ hdfs dfs -test -e "/user/cloudera/output_files/file_date_2017-04-06/part*.avro" ];
> then
> echo "PASS"
> else
> echo "FAIL"
> fi
-bash: [: too many arguments
FAIL


[cloudera@client01 scripts]$ if [ hdfs dfs -test -e /user/cloudera/output_files/file_date_2017-04-06/part*.avro ]; then echo "PASS"; else echo "FAIL"; fi
-bash: [: too many arguments
FAIL
[cloudera@client01 scripts]$

我不知道我的 if 条件出了什么问题。谁能帮我解决这个错误。

最佳答案

你的代码应该是:

if
hdfs dfs -test -e "/user/cloudera/output_files/file_date_2017-04-06/part*.avro"
then
echo "PASS"
else
echo "FAIL"
fi

请注意删除了 []

if 语句中的条件是一个命令,如果它的返回码是 0 则被认为是“真”,否则就是“假”。

test 命令(通常以其 [ ] 形式使用)是对其参数执行测试并返回 true/false 值的命令。它执行的测试不包括将其内部内容作为命令执行。我建议你查一下,它非常有用。

但是,如果只是需要测试一个命令的成功/失败,则不需要,直接以命令本身作为条件即可。

关于linux - 运行 bash 脚本时出现 Bash 错误太多参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609076/

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