在Bash中以字符串形式执行命令

草药

我正在测试一个简短的bash脚本。我想执行一个字符串作为命令。

#!/bin/bash

echo "AVR-GCC"
$elf=" main.elf"
$c=" $main.c"
$gcc="avr-gcc -mmcu=atmega128 -Wall -Os -o $elf$c"
eval $gcc
echo "AVR-GCC done"

我知道这很丑陋,但是它不应该执行avr-gcc命令吗?错误如下:

./AVR.sh: line 4: = main.elf: command not found
./AVR.sh: line 5: = .c: command not found
./AVR.sh: line 6: =avr-gcc -mmcu=atmega128 -Wall -Os -o : command not found
gniourf_gniourf

我不知道您的最终目标是什么,但是您可以考虑使用以下更可靠的方法:在bash中使用数组。(我不会讨论脚本中存在的几种语法错误。)

不要像以前那样将命令及其参数放在字符串中,然后再eval放在字符串中(顺便说一句,对您而言,评估无效)。我将您的脚本理解为(此版本不会给您提到的错误,请与您的版本进行比较,尤其是变量分配没有美元符号):

#!/bin/bash

echo "AVR-GCC"
elf="main.elf"
c="main.c"
gcc="avr-gcc -mmcu=atmega128 -Wall -Os -o $elf $c"
eval $gcc
echo "AVR-GCC done"

例如,当您遇到带有空格或有趣符号的文件(例如名为的文件; rm -rf *时,您很快就会遇到问题代替:

#!/bin/bash

echo "AVR-GCC"
elf="main.elf"
c="main.c"
gcc="avr-gcc"
options=( "-mmcu=atmega128" "-Wall" -"Os" )
command=( "$gcc" "${options[@]}" -o "$elf" "$c" )
# execute it:
"${command[@]}"

尝试了解这里发生的事情(我可以​​澄清您要问的所有具体问题),并意识到它比将命令放入字符串中安全得多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在echo中以字符串形式执行命令

来自分类Dev

如何在BASH中执行命令字符串?

来自分类Dev

在bash中执行命令,并以适当的文件通配符操作将其作为字符串传递

来自分类Dev

从包含带空格的参数的字符串中解析执行命令

来自分类Dev

如果程序在Shell脚本中输出特殊字符串,则执行命令

来自分类Dev

如何在bash中以字符串形式执行for循环

来自分类Dev

从历史记录中以字符串形式获取最后执行的命令,并将其存储在bash中的变量中

来自分类Dev

执行字符串命令-Bash

来自分类Dev

Bash尝试在Heredoc中执行命令

来自分类Dev

bash执行命令中的变量

来自分类Dev

检查是否在bash中执行命令

来自分类Dev

bash执行命令中的变量

来自分类Dev

BASH脚本-在变量中执行命令

来自分类Dev

当文件中有特定的字符串时,如何重复执行命令?

来自分类Dev

从带有单引号和双引号的字符串执行命令

来自分类Dev

如何在bash函数中以字符串形式运行“ grep | grep”命令?

来自分类Dev

Swift:使用国际格式的字符串执行Bash命令

来自分类Dev

Bash:在脚本中执行多命令行字符串

来自分类Dev

Bash:在脚本中执行多命令行字符串

来自分类Dev

在bash中当前运行的命令后如何执行命令?

来自分类Dev

在bash中命令1失败时执行命令2

来自分类Dev

在 bash 中执行命令之前测试命令

来自分类Dev

替换要在zsh中执行的命令中的字符串

来自分类Dev

在python中,以字符串形式获取系统命令的输出

来自分类Dev

无法在bash中的双括号中执行命令

来自分类Dev

无法在bash中的双括号中执行命令

来自分类Dev

我可以在Node中执行字符串命令吗?

来自分类Dev

如何在变量中执行字符串命令?

来自分类Dev

如何在变量中执行字符串命令?

Related 相关文章

  1. 1

    如何在echo中以字符串形式执行命令

  2. 2

    如何在BASH中执行命令字符串?

  3. 3

    在bash中执行命令,并以适当的文件通配符操作将其作为字符串传递

  4. 4

    从包含带空格的参数的字符串中解析执行命令

  5. 5

    如果程序在Shell脚本中输出特殊字符串,则执行命令

  6. 6

    如何在bash中以字符串形式执行for循环

  7. 7

    从历史记录中以字符串形式获取最后执行的命令,并将其存储在bash中的变量中

  8. 8

    执行字符串命令-Bash

  9. 9

    Bash尝试在Heredoc中执行命令

  10. 10

    bash执行命令中的变量

  11. 11

    检查是否在bash中执行命令

  12. 12

    bash执行命令中的变量

  13. 13

    BASH脚本-在变量中执行命令

  14. 14

    当文件中有特定的字符串时,如何重复执行命令?

  15. 15

    从带有单引号和双引号的字符串执行命令

  16. 16

    如何在bash函数中以字符串形式运行“ grep | grep”命令?

  17. 17

    Swift:使用国际格式的字符串执行Bash命令

  18. 18

    Bash:在脚本中执行多命令行字符串

  19. 19

    Bash:在脚本中执行多命令行字符串

  20. 20

    在bash中当前运行的命令后如何执行命令?

  21. 21

    在bash中命令1失败时执行命令2

  22. 22

    在 bash 中执行命令之前测试命令

  23. 23

    替换要在zsh中执行的命令中的字符串

  24. 24

    在python中,以字符串形式获取系统命令的输出

  25. 25

    无法在bash中的双括号中执行命令

  26. 26

    无法在bash中的双括号中执行命令

  27. 27

    我可以在Node中执行字符串命令吗?

  28. 28

    如何在变量中执行字符串命令?

  29. 29

    如何在变量中执行字符串命令?

热门标签

归档