Bash スクリプトは権限拒否メッセージを返します。

Bash スクリプトは権限拒否メッセージを返します。

このスクリプトを実行すると:

#!/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

$(...)コマンドの置き換え

Anddate +%Fnc -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"

おすすめ記事