是否可以在不保存为文件的情况下键入和执行shell脚本?

时间:2019-06-28 06:23:40

标签: bash shell heredoc teensy

我想将脚本键入到诸如Heredoc之类的文件中,然后在不首先写入文件的情况下执行该脚本。

我使用带有附加sdcard的Teensy3.2微控制器自动键入一些重复性任务(例如USB宏键盘)。

为什么?我有一台不允许永久更改文件系统/大量存储设备的计算机,并且我有重复的任务可以从Shell脚本中受益。

但是,我发现这非常有用,以至于我想将未修改的Shell脚本加载到SD卡上并执行它们。只能将它们键入(没有大容量存储)。将它们键入文件需要将它们保存到文件系统并执行授予的权限,然后才能执行它们并最终将其删除。

我对此并不满意。似乎有点骇人听闻,我不喜欢使用“键盘宏”自动删除文件。

我尝试过     ssh << EOF 等等... // //但是不同的计算机要求使用不同的密码,这些密码未存储在(未修改的)脚本中,并且ssh会提示您输入密码,并且不允许我更改此配置。

我也尝试过     执行<< << 等等...但是我不明白这种行为,因为它在完成时会杀死我的外壳(这使我感到恐惧)。

基本上我想:

Keyboard.print("exec << 'EOF'");
while (sdcardScriptFile.available()) {
  Keyboard.write(sdcardScriptFile.read());
}
Keyboard.print("EOF");

打开子shell并键入脚本的每一行会更好吗?如果是这样,我可以:

Keyboard.print("(");
while (sdcardScriptFile.available()) {
  Keyboard.write(sdcardScriptFile.read());
}
Keyboard.print(")");

我希望能够将脚本添加到SD卡,并使它们可以“即时”输入和执行,而无需更改文件系统。

1 个答案:

答案 0 :(得分:1)

如果需要在当前的shell进程中运行它,则可以获取它。

Keyboard.print(". /dev/fd/0 << 'EOF'");
while (sdcardScriptFile.available()) {
  Keyboard.write(sdcardScriptFile.read());
}
Keyboard.print("EOF");