在命令行上,如果我键入
adb -s "" shell
我有一个外壳,但是如果我尝试在bash中这样做:
#!/bin/bash
ADB_ID=""
adb -s ${ADB_ID} shell
我得到一个错误。我了解它没有传递$ {ADB_ID}的任何内容。我尝试将引号转义,这导致它查找名为“”的设备,这是不正确的。我也尝试过使用单引号和单转义的引号,两者都是错误的。如何在bash脚本中传递等效的命令行?
答案 0 :(得分:6)
养成在变量附近(几乎)始终使用双引号的习惯:
adb -s "$ADB_ID" shell
是您想要的。
报价是shell编程的话题。除了说:
如果您不引用上面的变量,则外壳程序将显示以下内容:
adb -s shell
并且无法知道在“ -s”和“ shell”之间应该有一些东西。
带引号的外壳会看到
adb -s "" shell
很明显那里有一个零长度的单词。
要进行更多研究,https://stackoverflow.com/tags/bash/info是一个很好的起点。
对于此特定问题,BashPitfalls编号2到5。
答案 1 :(得分:0)
总是quote variables,除非您确切地知道自己在做什么。
adb -s "$ADB_ID" shell
shell扩展变量然后收集命令行参数,因此,如果存在未引用的空变量($ADB_ID
),它将被忽略。引用空变量("$ADB_ID"
)时,与传递空字符串作为参数相同。