linux - 如何从现有脚本创建 shell 脚本?

标签 linux bash shell grep echo

您好,我想知道如何从现有的 shell 脚本创建 shell 脚本?我目前已经完成了一个应该创建的脚本,它看起来像这样:

#!/bin/bash

uptime=$(</proc/uptime)
uptime=${uptime%%.*}
user=$(whoami)
seconds=$(( uptime%60 ))
minutes=$(( uptime/60%60 ))
hours=$(( uptime/60/60%24 ))
days=$(( uptime/60/60/24 ))
echo -e "
\033[0;35m+++++++++++++++++++: \033[0;37mServer Data\033[0;35m :+++++++++++++++++++
\033[0;35m+  \033[0;37mHostname \033[0;35m= \033[1;32m`hostname`
\033[0;35m+    \033[0;37mKernel \033[0;35m= \033[1;32m`uname -r`
\033[0;35m+      \033[0;37mTime \033[0;35m= \033[1;32m`date +%k:%M:%S`
\033[0;35m+    \033[0;37mUptime \033[0;35m= \033[1;32m$days d ~ $hours h ~ $minutes m ~ $seconds s
\033[0;35m+       \033[0;37mCPU \033[0;35m= \033[1;32m`cat /proc/cpuinfo | grep 'model name' | cut -c 14-100 | uniq`
\033[0;35m+    \033[0;37mMemory \033[0;35m= \033[1;32m`cat /proc/meminfo | grep MemTotal | awk {'print $2'}` kB
\033[0;35m++++++++++++++++++++: \033[0;37mUser Data\033[0;35m :++++++++++++++++++++
\033[0;37m+  \033[0;37mUsername \033[0;35m= \033[1;32m$user
\033[0;35m+  \033[0;37mSessions \033[0;35m= \033[1;32m`who | grep $user | wc -l` of 14
\033[0;35m+++++++++++++++++++++++++++++++++++++++++++++++++++++\e[m 
"

我看到的唯一问题是,像“cat”或“grep”这样的命令会使它们被解释出来,而不是被打印出来。所以这就是为什么我在这里问这样的事情怎么可能是一个。

提前致谢

最佳答案

尝试使用 here-doc 和带有单引号的特殊技巧(无插值):

cat<<'EOF'>script.sh
#!/bin/bash

uptime=$(</proc/uptime)
uptime=${uptime%%.*}
user=$(whoami)
seconds=$(( uptime%60 ))
minutes=$(( uptime/60%60 ))
hours=$(( uptime/60/60%24 ))
days=$(( uptime/60/60/24 ))
echo -e "
\033[0;35m+++++++++++++++++++: \033[0;37mServer Data\033[0;35m :+++++++++++++++++++
\033[0;35m+   \033[0;37mAddress \033[0;35m= \033[1;32m109.163.233.49
\033[0;35m+  \033[0;37mHostname \033[0;35m= \033[1;32m`hostname`
\033[0;35m+    \033[0;37mKernel \033[0;35m= \033[1;32m`uname -r`
\033[0;35m+      \033[0;37mTime \033[0;35m= \033[1;32m`date +%k:%M:%S`
\033[0;35m+    \033[0;37mUptime \033[0;35m= \033[1;32m$days d ~ $hours h ~ $minutes m ~ $seconds s
\033[0;35m+       \033[0;37mCPU \033[0;35m= \033[1;32m`cat /proc/cpuinfo | grep 'model name' | cut -c 14-100 | uniq`
\033[0;35m+    \033[0;37mMemory \033[0;35m= \033[1;32m`cat /proc/meminfo | grep MemTotal | awk {'print $2'}` kB
\033[0;35m++++++++++++++++++++: \033[0;37mUser Data\033[0;35m :++++++++++++++++++++
\033[0;37m+  \033[0;37mUsername \033[0;35m= \033[1;32m$user
\033[0;35m+  \033[0;37mSessions \033[0;35m= \033[1;32m`who | grep $user | wc -l` of 14
\033[0;35m+     \033[0;37mAdmin \033[0;35m= \033[1;32mSergey Ruslan
\033[0;35m+++++++++++++++++++++++++++++++++++++++++++++++++++++\e[m 
"
EOF

关于linux - 如何从现有脚本创建 shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120545/

相关文章:

linux - 从 shell 脚本运行时 top 和 grep 不输出任何内容

linux - Logstash 打开了太多文件?

linux - 如何缓解高 SoftIRQ (si) CPU

bash - 如何在匹配正则表达式的第一行之后获取文件的一部分

linux - 将 ( cd/&& ls ) 命令作为变量传递给 bash 脚本

python 在启动树莓派时运行时将输出保存到文件

linux - 在 linux 中有 2 个阻塞脚本相互交互

linux - 将 busybox 编译为 BFLT 可执行文件

bash - 压缩错误 - 无事可做

bash - Bash 中的远程 URL 补全