当前位置: 首页 > 面试题库 >

如何在Bash脚本中回显“ $ x_ $ y”?

董俊晖
2023-03-14
问题内容

非常有趣的是,如果您打算0_1使用代码与Bash 一起显示

x=0
y=1
echo "$x_$y"

那么它只会显示

1

我试过了echo "$x\_$y",不起作用。

我如何回显表格$x_$y?我将在文件名字符串上使用它。


问题答案:

由于允许变量名中带有下划线,因此命令:

echo "$x_$y"

正在尝试回显${x_}(在您的情况下可能为空),然后是${y}。这样做的原因是因为参数扩展是一个贪婪的操作-
$在变量名后将使用尽可能多的合法字符。

手册的相关部分bash指出:

$字符引入参数扩展,命令替换或算术扩展。

可以将要扩展的参数名称或符号括在括号内,该括号是可选的,但 用于保护要扩展的变量不受紧随其后的字符的影响,这些字符可以解释为名称的一部分。

使用花括号时,匹配的结尾花括号是第一个}不被反斜杠或加引号的字符串引起的转义,而不是嵌入的算术扩展,命令替换或参数扩展。

因此,该解决方案是确保_ 作为第一变量,它是可以做到的一部分进行处理:

echo "${x}_${y}"

我倾向于像这样做 所有的 bash变量,甚至是独立的变量

echo "${x}"

因为它更明确,而且我在过去被咬过很多次:-)



 类似资料:
  • 问题内容: 我有一些要自动执行的SQL脚本。过去,我使用过SQL * Plus,并从bash脚本中手动调用了sqlplus二进制文件。 但是,我试图找出是否有一种方法可以连接到数据库,并从bash脚本内部调用该脚本……以便我可以插入查询并使查询相对于特定天数运行过去。 问题答案: 我有点困惑。您应该能够从bash脚本中调用sqlplus。这可能就是您在第一个陈述中所做的 尝试在bash脚本中执行以

  • 问题内容: 我正在Ubuntu Linux下编写一些bash脚本。我希望能够从GUI运行它们而无需终端窗口来输入任何输入或查看任何输出。 到目前为止,唯一需要的输入是sudo的密码-gksudo可以很好地处理。但是我还没有找到显示消息框的简便方法。是否有某种“ gkmessage”命令可用?我希望默认的Ubuntu安装中包含某些内容,但是如果需要的话,我不介意安装新软件包。 问题答案: 我相信Ze

  • 问题内容: 我想从bash脚本执行python脚本,并且要将python脚本的输出存储在变量中。 在我的python脚本中,我将一些内容打印到屏幕上,最后我返回一个带有以下内容的字符串: 在我的bash脚本中,我执行了以下操作: 但是,当我检查with的值时,我得到了Python脚本打印到屏幕上的所有内容,但 没有 返回值! 我应该怎么做? 编辑:我需要该字符串,因为它告诉我Python脚本创建的

  • 问题内容: 我使用的测试脚本包含很多命令,并且会生成大量输出,我使用或和,所以脚本会在发生错误时停止。但是,我仍然很难定位执行停止在哪一行以定位问题。有没有一种方法可以在执行每行之前输出脚本的行号?还是输出命令产生之前的行号?否则任何可以解决我的脚本行位置问题的方法都将提供很大的帮助。谢谢。 问题答案: 您提到您已经在使用。该变量表示值是设置选项时在回显命令行之前打印的提示,默认情况下为空格。 您

  • 问题内容: 我写了一个脚本,希望它可以在bash中通过 管道传递 。就像是: 可能吗?怎么样? 问题答案: 看到这个简单的: 运行: 输出: debug_output.txt内容:

  • 问题内容: 我有一个批处理文件,该文件在sqlplus中运行一个SQL脚本,并将输出发送到日志文件: sqlplus用户/密码 RowCount.log 我的日志文件包含以下内容: 等等,但是它有数千行输出,因此很难确定哪个结果属于哪个语句。 我想在输出中添加一些格式,以便我可以识别发生了什么。可以对执行的语句进行回显,也可以在脚本中手动插入一些“ echo”语句。理想情况下,它看起来像这样: 问