linux - 如何在 bash 命令行中调用变量?

标签 linux bash variables

我正在尝试创建这个小程序来帮助我,只用一个命令,在 Ubuntu 的终端中编译和运行 C 程序。

为了让它更漂亮,我在 bash 文件中添加了一个参数,这样我就可以将它用于我想要的任何 C 程序。所以它应该是这样的:

  • 创建一个变量来存储文件名
  • 使用该变量编译程序(到相同的文件名)
  • 使用相同的名称运行文件。

代码如下:

# usr/bin/bash
filename=$1
cc -o $filename "$filename.c"
./$filename.out

几乎一切正常,唯一的问题是在最后一行:

./$filename.out

它似乎没有在执行最终程序的命令中使用变量的名称。

我是 bash 的新手(假设我已经几个月没用过它了)。

最佳答案

cc -o foo 将输出 foo 而不是 foo.out。您还应该双引号变量扩展以防止 IFS-splitting 和 globbing:

filename=$1
cc -o "$filename" "$filename.c" &&
./"$filename"

除此之外 #/usr/bin/bash(不像 #!/usr/bin/bash)什么都不做。这是一条评论。整个过程将运行 /bin/sh,而不是 bash(但无论如何您不需要 bash)。

关于linux - 如何在 bash 命令行中调用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45325203/

相关文章:

android - 无法分配局部变量,因为它是在外部定义的

linux - Asp.Net 5 镜像在 Linux VM 上工作 3-4 秒后被终止/停止

linux - 等待子进程但出现错误 : 'pid is not a child of this shell'

javascript - 选择选项时更改变量值,不再选择时返回之前的值

linux - 如何将变量传递到 Azure Databricks 群集初始化脚本中

ruby - #!/usr/bin/env ruby​​ 在 cron 中找不到

c - C中需要将全局变量转换为局部变量

linux - 在输出中搜索并从特定行搜索到特定行,然后再次搜索

linux - 在 Unix 中使用正则表达式连接两个文件(最好使用 perl)

bash - 从长文本中提取字符串