从脚本创建 bash 文件 [重复]

Posted

技术标签:

【中文标题】从脚本创建 bash 文件 [重复]【英文标题】:Creating a bash file from a script [duplicate] 【发布时间】:2021-08-29 18:56:42 【问题描述】:

您好,我是一个新手,正在尝试制作一个可以自动安装多个 SBC 的 bash 脚本。

它创建了几个文件、文件夹、cronjobs、tweeks 一些配置。

我在创建其他 shell 脚本时遇到了困难。

我试过了:

cat > cputemp.sh <<EOF
#!/bin/bash
while :
 do
        x=$( cat /sys/devices/virtual/thermal/thermal_zone0/temp )
        y=$( cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq )
        z=$(expr $y / 1000)
        t=$(expr $x / 1000)
        echo -en "\033[1K\r\e[91mTemperature:\e[0m" "\e[93m$tº\e[0m "
        echo -en "\e[91mFrequency:\e[0m" "\e[93m$z MHz\e[0m"
        sleep 2
done
EOF

但不是将这些行放在文件中,它似乎正在尝试运行它们。我明白了

cat: /sys/devices/virtual/thermal/thermal_zone0/temp: No such file or directory
cat: /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq: No such file or directory
expr: syntax error: unexpected argument ‘1000’
expr: syntax error: unexpected argument ‘1000’

我错过了什么?顺便说一句,它找不到这些位置,因为我正在使用 WSL 而不是 SBC 的 Windows 上测试脚本。

提前致谢。

【问题讨论】:

我认为你只需要在变量赋值上转义$(...)。基本上用\$替换$ 如果您使用的是 Bash,则不需要expr;算术工具内置在外壳中。 z=$((y / 1000)) 等(如果您需要分数,请尝试 Awk 或 bc;但 expr 也只是整数)。 【参考方案1】:

要么创建由'EOF' 包围的heredoc,要么在创建变量时使用\$

cat > cputemp.sh <<'EOF'
...

【讨论】:

效果很好,谢谢。

以上是关于从脚本创建 bash 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Bash脚本从.txt文件中删除特定行[重复]

无法在 bash 脚本中设置变量 [重复]

从用户获取输入到包含空格的路径(bash脚本)[重复]

bash 无法从文本文件中找到目录 [重复]

用于读取文件、排序和打印重复记录及其标识号的 Bash 脚本

使用for循环bash脚本逐行读取文件[重复]