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

时间:2017-07-26 11:09:49

标签: linux bash variables

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

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

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

以下是代码:

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

几乎一切都在运行,我仍然唯一的问题是在最后一行:

./$filename.out

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

我是bash的菜鸟(假设我好几个月没用过它)。

3 个答案:

答案 0 :(得分:6)

cc -o foo将输出foo而非foo.out。您还应该双引号变量扩展以防止IFS - 拆分和通配:

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

除了# /usr/bin/bash(与#!/usr/bin/bash不同)之外什么都不做。这是一个评论。整个事情将运行/bin/sh,而不是bash(但无论如何你都不需要bash。)

答案 1 :(得分:-1)

您需要使用引号:

./"$filename.out"

答案 2 :(得分:-2)

#!/bin/sh
filename=$1
cc -o "${filename}.out" "${filename}.c"
"./${filename}.out"