gpt4 book ai didi

linux - 传递给读入文件的参数为 0

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:06 25 4
gpt4 key购买 nike

我有一个脚本:

#!/bin/bash
echo "You chose $1 and $2 "
if [[ $1 -eq 0 || $2 -eq 0 ]]
then
echo "You didn't chose argument"
exit 1
elif

...
exit 0

在终端我尝试了:

./Path/to/script argument1 argument2

结果我得到:

You chose argument1 and argument2
You didn't chose argument

我怎么可能在同一时刻正确返回两个参数并将它们视为 0?

这里有什么问题吗?

最佳答案

-eq 用于整数 比较,当您尝试将字符串与整数进行比较时,[[ 会变得有点滑稽。 bash$1 扩展为 另一个 变量的名称并扩展那个。如果该变量不存在,则默认扩展为 0。

如果要检查字符串本身是否为零,请坚持使用字符串比较:

if [[ $1 = 0 || $2 = 0 ]]; then

如果您更有可能想要检查是否实际提供了两个参数,请按照 mickp 的建议检查 $# 的值:

if (( $# < 2 )); then
echo "You didn't provide 2 arguments.

另一种选择是使用 ${...?....} 形式的参数扩展,它会打印给定的错误消息并在未设置参数时退出。

: ${1?You need two arguments, provided none}
: ${2?You need two arguments, provided only $1}

关于linux - 传递给读入文件的参数为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54055222/

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