当我运行这个脚本时:
#!/bin/bash
# internet-status.sh
# ==================
now=$(date +%F)
cmd_output=$(nc -dzvw1 8.8.8.8 443 2>&1)
logfile_string=$("[$now] $cmd_output")
logfile=$("$HOME/internet.log")
$logfile_string >> "$logfile"
它返回:
/home/xxxx/internet.log: Permission denied
我已经在 internet-status.sh 上运行 chmod u+x
权限如下:
-rw-rw-rw- internet.log
和
-rwxrw-r-- internet-status.sh
答案1
$(...)
是一个命令替换。
而date +%F
和nc -dzvw1 8.8.8.8 443 2>&1
是命令,"[$now] $cmd_output"
并且"$HOME/internet.log"
只是字符串 - 并且应该这样分配:
logfile_string="[$now] $cmd_output"
logfile="$HOME/internet.log"
然后您可能希望将echo
字符串添加到文件中:
echo "$logfile_string" >> "$logfile"