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

如何将命令存储在Shell脚本的变量中?

柯琛
2023-03-14
问题内容

我想将要在以后使用的命令存储在变量中(不是命令的输出,而是命令本身)

我有一个简单的脚本,如下所示:

command="ls";
echo "Command: $command"; #Output is: Command: ls

b=`$command`;
echo $b; #Output is: public_html REV test... (command worked successfully)

但是,当我尝试更复杂的操作时,它会失败。例如,如果我做

command="ls | grep -c '^'";

输出为:

Command: ls | grep -c '^'
ls: cannot access |: No such file or directory
ls: cannot access grep: No such file or directory
ls: cannot access '^': No such file or directory

知道如何将这样的命令(带有管道/多个命令)存储在变量中以备后用吗?


问题答案:

使用eval:

x="ls | wc"
eval "$x"
y=$(eval "$x")
echo "$y"


 类似资料:
  • 问题内容: 我试图在同一行中打印逗号后的值,以便我可以拥有这些值的csv文件,但即时通讯无法保存的值 预期输出为 请让我知道我做错了,谢谢! 问题答案: 使用反引号(或-可以嵌套),而不是单引号:

  • 问题内容: 我需要将我执行的shell命令的结果存储在一个变量中,但是我无法使其工作。我尝试像: 但是它将结果打印在终端中,并将call的值打印为零,可能表示成功。如何将结果存储在变量中? 问题答案: 改用模块: 编辑:这是Python 2.7中的新功能。在早期版本中,这应该可以工作(命令重写如下所示): 作为旁注,您可以重写 至 您甚至可以用一个脚本替换整个语句: 导致:

  • 问题内容: 我想要的是将git命令的输出(例如git status)存储在shell脚本的变量内。当我说输出时,我说的是在终端上执行命令时返回的文本,例如:在回购之外执行git status时: 我尝试了这个: 但是’var’没有存储任何东西。 问题答案: 您可以使用: 即将stderr重定向到stdout,然后捕获输出。 否则,当会写上错误消息并且您的命令:仅正在捕获时。

  • 问题内容: 我正在编写一个脚本来备份数据库。我有以下几行: 我想将stderr分配给一个变量,以便它将向自己发送一封电子邮件,让我知道如果出现问题,会发生什么。我已经找到了将stderr重定向到stdout的解决方案,但是由于stdout已经(通过gzip)发送到文件中,因此我无法做到这一点。如何将stderr分别存储在变量$ result中? 问题答案: 尝试将stderr重定向到stdout并

  • 我有一个字符串,它将被用作命令。此外,在运行该命令之前,我需要用变量值替换字符串模式。 但是在分配时,我得到的命令没有找到所有的输出行。 我试着放了些逃生卡,但没用。 bash:=:命令未找到bash:AWS_ACCESS_KEY_ID:命令未找到bash:=:命令未找到bash:AWS_SECRET_ACCESS_KEY:命令未找到bash:=:命令未找到bash:AWS_SESSION_TOK

  • 拉斯宾(杰西)-root@RaspberryPi-腻子 在我输入的终端中 现在我得到了一个包含此代码的脚本 有一个cronjob每小时启动一次这个脚本 苏。一定有什么地方出错了。因为他将变量$finalanswer解读为nothing。 这意味着在此脚本之外定义的变量将不起作用? 我该如何解决这个问题?