小编J.D*_*Doe的帖子

带有命令行选项的 Bash 脚本卡住并且没有设置变量的默认值

我对 bash 脚本非常陌生,并且对 bash 中的命令行功能完全陌生。我尝试了一个脚本,如果用户喜欢直接编辑代码,该脚本应该可以与命令行参数以及手动设置变量值一起使用。

总体思路是这样的:

  • 使用 while/case/getopt 结构为不同函数定义命令行参数。
  • 设置相应案例内每个选项的变量值。
  • 稍后,检查是否确实使用 if 情况提供了命令行参数。
  • 如果没有,则将该值设置为默认参数。

这样一来,人们可以使用myscript.sh -i somestring,或者仅在 if 情况下手动设置与 -i 关联的变量。这样,脚本也可以通过执行来运行./myscript.sh

我发现我的代码中的 if 情况实际上没有做任何事情,或者至少没有做我想要的事情。当我在没有命令行参数的情况下运行脚本,然后回显应由 if 情况设置的默认值时,它们是空的。

这意味着脚本中稍后的 for 循环无法工作,因为这些变量尚未设置为任何值。脚本卡住的行是 slurm_file_string=$(cat $slurm_template_file | sed "s/INPUT_FILE/$gs_file/")

所以我不知道如何实现我想要实现的目标以及如何解决这个“卡住问题”。我需要以某种方式更改 if 情况,以便 if 情况内的默认值实际上执行某些操作,但不知道如何执行。

这是我的代码:

#!/bin/bash

# TODO: 
    # Need to figure out if I can launch all slurm jobs with "&" and let slurm handle the rest.
    # Add scratch removal logic to slurm file template. Makes more sense to …
Run Code Online (Sandbox Code Playgroud)

command-line bash arguments

0
推荐指数
1
解决办法
361
查看次数

标签 统计

arguments ×1

bash ×1

command-line ×1