Bash中的Argc和Argv [重复]

Posted

技术标签:

【中文标题】Bash中的Argc和Argv [重复]【英文标题】:Argc and Argv in Bash [duplicate] 【发布时间】:2017-12-22 20:17:04 【问题描述】:

我编写了以下脚本,它获取文件名,然后组装和链接文件。但它不起作用。它有什么问题?

EXPECTED_ARGS=2


if [ $# -ne $EXPECTED_ARGS ]
then
        echo "[+] Assembling with Nasm."
        nasm -f elf32 $1 -o $1.o

        echo "[+] Linking ..."
        ld $1.o -o $1

        echo "[+] Done!" 

else
        printf  "\nInvalid number of arguments, please check the inputs and try again\n"

fi;

当我在不传递任何参数的情况下运行它时,它不会显示以下错误:

printf  "\nInvalid number of arguments, please check the inputs and try again\n"

【问题讨论】:

首先,您必须颠倒您的if...then...else 构造的逻辑。此外,与 C 约定相反,在 bash 中 $0 不算作参数,因此 EXPECTED_ARGS 在您的脚本中必须为 1 我将它设置为 1 但没有任何改变。 您还必须反转您的 if ... then ... else 语句(即,当实际参数数量不等于预期参数数量时打印错误,否则执行此工作) -ne 不相等...您交换了条件。如果 [ $# -eq $EXPECTED_ARGS ] .... 从我的角度来看,寻找 Bash 的 ARGC 等效项(使用 Google)(即 $#ARGC=$(( $# ))),作为“重复”的原始链接的问题完全没有回答.让我想在这里改进答案,但我做不到。 【参考方案1】:

好的,这样试试

定义一个变量 ARGC=$#

你的 if 语句看起来像

如果 [ $ARGC -ne $MAX_ARGS ];那么

传说:

-ne = 不等于

-gt = 大于

-eq = 等于

【讨论】:

以上是关于Bash中的Argc和Argv [重复]的主要内容,如果未能解决你的问题,请参考以下文章

php 中的$argv与$argc

main中的argv和argc

如何从库函数中访问 c​​++ 中的 argc 和 argv

在代码中创建 argc argv [重复]

main中的argc,argv

命令行执行php脚本中的$argv和$argc配置方法