如果我将cat命令保存到字符串中,然后执行它,那么我将得到一个错误。
linux# cmd="cat /data/test/test.tx* | grep toto"
linux# eval '$cmd'
cat: |: No such file or directory
cat: grep: No such file or directory
cat: toto: No such file or directory
即使是
linux# $cmd
cat: |: No such file or directory
cat: grep: No such file
我已经编写了shell脚本,它从输入文件中读取命令并执行命令。我有这样的命令:
cat linux_unit_test_commands | grep "dmesg"
在输入文件中。在执行shell脚本时,我收到下面的错误消息:
cat: |: No such file or directory
cat: grep: No such file or directory
cat: "dmesg": No such file or directory
剧本:
#!/bin/bash
while read line
do
output=`$line
我在Linux shell中有包含以下详细信息的文件
Sam , apple
jhon , banana
Sam , apple
jhon , banana
Sam , mango
jhon , banana
jhon , apple
Sam , apple
Sam , papaya
使用我的Linux命令,我可以得到如下结果
cat /names/fav.log | cut -d "," -f 1|sort |uniq -c | sort -rn
结果
Sam 5
jhon 4
但我需要第二列的uniq计数。如下所示
Required result
代码:
# cat mylinux.py
# This program is to interact with Linux
import os
v = os.system("cat /etc/redhat-release")
输出:
# python mylinux.py
Red Hat Enterprise Linux Server release 7.6 (Maipo)
在上面的输出中,无论我为存储输出而定义的变量如何,都会显示命令输出。
如何仅使用os.system方法将shell命令输出存储到变量?
我曾经用这种方式识别已安装的RHEL OS版本是“服务器”还是“工作站”:
cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.6 (Maipo)
现在,对于RHEL8,我有了以下输出:
cat /etc/redhat-release
Red Hat Enterprise Linux release 8.5 (Ootpa)
看来我没有机会了解服务器/工作站的详细信息。这怎麽可能?我怎么才能从里面得到我需要的信息?
我在一台旧的台式电脑上安装了4gb的内存,我刚刚安装了4gb的额外内存。Bios检测8gb,windows检测它。但是linux只提供4gb的内存。
名为-a:
Linux appie-imedia-S2185 5.4.0-70-generic #78-Ubuntu SMP Fri Mar 19 13:29:52 UTC 2021 x86_64
x86_64 x86_64 GNU/Linux
免费-m:
total used free shared buff/cache available
Mem: 3365 1
我有一个模板文件(template.txt):
Hello, $x
Hello, $y
我有一个脚本文件(script.sh):
#!/bin/bash
$x=linux
$y=unix
# I want to include template.txt as a here-doc
如何将template.txt包含为here-doc of script.sh。
因此,当我运行script.sh时,输出应该是:
Hello, linux
Hello, unix
编辑:
我认为replace对我的工作来说是个很好的命令:
$ cat template.txt | replace '$x&