Linux 如何在bash中将half命令分配给变量
这个命令运行良好Linux 如何在bash中将half命令分配给变量,linux,bash,Linux,Bash,这个命令运行良好 find . -name "test" 但我想在shell脚本中这样做 $FIND = "find . -name " 这样我就可以使用$FIND“test” 但它不起作用想想下面的说法: $Find = "find . -name " 这有两个问题: shell要求赋值中的=周围没有空格 $Find是变量的值。它不是变量本身 因此,要将值分配给查找,请使用: Find="find . -name " 无法运行: $Find test 这种方法是可移植的,但有局限性。
find . -name "test"
但我想在shell脚本中这样做
$FIND = "find . -name "
这样我就可以使用$FIND“test”
但它不起作用想想下面的说法:
$Find = "find . -name "
这有两个问题:
=
周围没有空格$Find
是变量的值。它不是变量本身查找
,请使用:
Find="find . -name "
无法运行:
$Find test
这种方法是可移植的,但有局限性。从长远来看,最好使用数组来解决这类问题
最后,最好不要对变量名使用所有的大写字母。系统对其变量使用所有大写字母,您不希望意外地覆盖其中一个
使用数组
可以为此定义一个数组,如下所示:
Find=(find . -name)
"${Find[@]}" test
该阵列可按如下方式使用:
Find=(find . -name)
"${Find[@]}" test
对于您展示的简单示例,数组解决方案和简单变量解决方案之间没有区别。但是,一旦命令变得更复杂,需要引号或转义符,就必须使用数组 见。简短总结:根据您实际要完成的任务,使用函数或数组
对于您的特定示例,我将使用一个函数:
find_name() {
find . -name "$1"
}
find_name "test"
如何使用
eval
?如果需要使用变量,这似乎是最简单的方法。它可能是这样的:
find="find . -name"
eval $find test
但是你应该
无论如何,别名或函数会更好,如果您对变量没有任何特殊要求。Alias绝对是最简单的方法,功能更灵活(您可以将任何需要的逻辑放在那里):
怎么不工作?也许可以删除
=
运算符周围的空格。如何在此场景中使用数组我用数组示例更新了答案。更详细地说,Gordon引用的是一个很好的资源。函数比数组更好。好的,太好了,那就使用别名吧。它的设计正是为了满足你的需要。为此目的使用变量是非常奇怪的,因此没有直接的方法来执行变量中的内容。或者别名,只要参数在末尾。@paxdiablo也行。我倾向于选择函数而不是别名,因为它们在脚本中工作,并且以交互方式工作,并且它们对参数提供了更多的控制——在本例中,我认为这两种方法都不相关,所以别名应该可以。