我可以在我的 bash shell 脚本上执行 linux 命令吗?例如,如何在 shell 脚本上执行 ifconfig。当我执行 shell 时,ifconfig 的输出应该出现在终端上。有什么可能性吗?提前致谢。
答案1
这很可能就是问题的核心:
要记住的主要一点是(粗略地讲)运行命令的“提示符”是 shell。当您在该提示符上运行脚本时,它将作为 shell 的子进程运行。shell 将成为父进程。
或者,引用 Mendel Cooper 在《高级 Bash 脚本指南》中的话:
子 shell 是命令处理器的一个独立实例——该 shell 在控制台或 xterm 窗口中为您提供提示。就像您的命令在命令行提示符下被解释一样,脚本也会对命令列表进行批处理。实际上,每个正在运行的 shell 脚本都是父 shell 的一个子进程(子进程)。
http://www.tldp.org/LDP/abs/html/subshells.html
该指南包含与您的问题相关的非常出色的信息。
这意味着什么?
将命令行转换为脚本格式时最常见的问题之一是,当它是作为较大命令的一部分运行时,脚本必须将值返回给父进程(shell)。如果没有,则脚本会安静地执行,就像它不在 shell 命令中一样。
通常,这种类型的问题可以通过回显值或返回值来解决。有时值会被导出到全局变量,您可以自己创建。这听起来根本不像全局变量的情况,只是举几个例子。
我将根据所提供的信息尽力直接回答您的问题。
问:我可以在我的 bash shell 脚本上执行 Linux 命令吗?
答:是的。
问:例如,如何在 shell 脚本上执行 ifconfig。
答:这是一个例子(假设是 BASH):
cat NEW_NIC
#!/bin/bash
my_new_nic=enp101
echo my_new_nic
chmod 744 NEW_NIC
ifcfg NEW_NIC
问:当我执行 shell 时,ifconfig 的输出应该出现在终端上。
答:这是一个例子(假设是 BASH):
cat SHOW_IF
#!/bin/bash
ifcfg
chmod 744 SHOW_IF
SHOW_IF
有关脚本的更多细节将有助于提供更好的答案。
答案2
是的,您可以在 shell 或终端上执行任何基本和复杂的命令。
如果你感到困惑,请记住:终端 = 文本输入/输出环境和 shell = 命令行解释器
如果您需要更多解释,可以参考以下链接。 https://askubuntu.com/questions/506510/terminal-console-shell-and-command-line 之间的区别是什么