gpt4 book ai didi

bash - 将命令行参数与字符串进行比较

转载 作者:行者123 更新时间:2023-11-29 08:42:28 36 4
gpt4 key购买 nike

这是我的代码:

#!/bin/bash
if [ "$#" -ne 2 ] ; then
echo "$0: exactly 2 arguments expected"
exit 3
fi

if [$1 != "file" -a $1 != 'dir'] ; then
echo "$0: first argument must be string "file" or "dir""
exit 1
elif [-e $2 -a -r $2]; then
if ["$1" = "file" -a -f $2] ; then
echo YES
elif ["$1" = "dir" -a -d $2] ; then
echo YES
else
echo NO
fi
exit 0
else
echo "$0: $2 is not a readable entry"
exit 2
fi

如果我运行 ./lab4 file filename1 它将检查第一个参数是字符串“file”还是“dir”,然后如果第一个参数是“file”并且 filename1 是一个文件,它会打印是。目录也一样。

它不识别$1$2。代码将输出:

./lab04Q2: line 7: [file: command not found
./lab04Q2: line 10: [-e: command not found

即使我在运行程序时确实输入了 2 个参数。

最佳答案

在 bash 中尝试以下 3 行:

if [ "a" == "a" ]; then echo hi; fi
if ["a" == "a" ]; then echo hi; fi
if ["a" == "a"]; then echo hi; fi

您会看到只有第一个有效,而其他两个无效。也就是说,您的空格不足是您的表达式不起作用的原因。

以上示例还建议您可以直接在 bash 提示符下测试 bash 语法。您可以在将它们合并到您的脚本中之前做好准备。

关于bash - 将命令行参数与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254938/

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