将命令分配给变量

RR_*_*RR_ 8 bash alias

我将命令分配ls给我的变量,my_File但是当我运行它时$my_File它不起作用。你能解释一下为什么吗?

#!/bin/bash
my_File='ls -f | grep -v '\/''
$my_File
Run Code Online (Sandbox Code Playgroud)

Gil*_*il' 13

您编写的行定义了一个变量,其值为 string ls -f | grep -v /。当您不加引号使用它时,它会扩展为单词列表(字符串在空格处拆分):ls, -f, |, grep, -v, /。该|字符并不特殊,因为 shell 正在拆分字符串,而不是解析它,因此它成为ls命令的第二个参数。

你不能把命令塞进这样的字符串中。要为命令定义短名称,请使用别名(如果命令完整)或函数(如果命令具有参数并且不仅仅是将一些默认参数传递给单个命令)。在您的情况下,别名就可以了。

alias my_File='ls -f | grep -v /'
my_File
Run Code Online (Sandbox Code Playgroud)