引用は、あなたはそれが(BashFAQ #050: I'm trying to put a command in a variable, but the complex cases always fail!を参照)んだと思うように動作しません、変数にコマンドを入れないでください。 (そして、echo $cmd
は、実際に実行されるコマンドを教えてくれません)。コマンドを直接実行してください。
また、defaults read ...
ではなく、defaults write ...
を実行しようとしています。最後に、最後の行のエコーとバッククォートは効果的に互いにキャンセルします。両方を削除するだけです。ここで私は何を得るのです。何らかの理由で、あなたが実際にそれを実行する前に、変数にコマンドを格納する必要がない、場合
#!/bin/sh
current=$(date +"%Y-%m-%d %l:%M:%S +0000")
defaults write com.Growl.GrowlHelperApp LastUpdateCheck -date "$current"
printf "New value of LastUpdateCheck: "
defaults read com.Growl.GrowlHelperApp LastUpdateCheck
、配列を使用します。しかし、これはbashの専用機能であることに注意してください、そう#!/bin/bash
でスクリプトを起動します。
#!/bin/bash
current=$(date +"%Y-%m-%d %l:%M:%S +0000")
cmd=(defaults write com.Growl.GrowlHelperApp LastUpdateCheck -date "$current")
printf "About to execute:"
printf " %q" "${cmd[@]}" # Need to use printf trickery to get appropriate quoting
printf "\n"
"${cmd[@]}"
printf "New value of LastUpdateCheck: "
defaults read com.Growl.GrowlHelperApp LastUpdateCheck
それはデフォルトが書き込み言った場合3行目は、より理にかなって... – jackrabbit